ASTRONOMSKI KROŽEK Gimnazije Šentvid, perl vaje


Perl - nekaj vaj


    Perl za dos dobis recimo na: http://www.perl.com/download.csp
    ali
    padre-on-strawberry ... (Perl Application Development and Refactoring)
    Perl pozenes na linuxu ./proc.pl
    V DOS-u c:\programi>perl proc.pl
    Perl lahko v dos-u (win), pretvorite v exe s programom Perl2.exe 3.08 ( Converti scipt Perl in file EXE) na:
    http://download.nafura.it/home/pc/files.asp?cat=D68&ord=2&pg=21&select=&select2=&select3=
    Recimo ukaz: C:\programi\perl2exe>perl2exe hellocgi.pl
    naredi hellocgi.exe
  1. * perl_vaje_zorko_miha_andrej_katarina_gregor_v.zip - zbirka nekaterih spodnjih vaj v zip paketu, didakticno uredila Katarina Kosovelj.
  2. *vaja1.pl (izpis pozdrava na ekran)

  3. *vaja2.pl (definicija spremenljivk, sestevanje in odstevanje)

  4. *vaja3.pl (vnos - branje spremenljivk - print "Vstavi vrednost a "; $a=<STDIN> chomp($a);)

  5. *vaja4.pl (odpiranje in pisanje v datoteko, while stavek itn - open (PISIV,">>izhod1.txt") || die "ne morem narediti datotelke"; ... print PISIV "a+b=$c\n a*b=$d \n";)

  6. *vaja5.pl (branje iz ene datoteke in pisanje v drugo datoteko - open (VHODRADAR,"<si0-20010531-2300-rh.srda") || die "ne morem odpreti datoteke $!"; while ( defined($instr=<VHODRADAR>) ) { chomp($instr); print "$instr \n"; print PISIV "$instr \n";} close VHODRADAR; )

  7. *vaja6.pl (določanje dolzine stringa - $dolzina=length($instr); )

  8. *vaja7.pl (uporaba podprograma, branje samo dolocenih delov stringa po formatu, vpeljava polja - $formatradar="401i6"; ... @vrstica_radar=unpack(fort_format($formatradar),$instr); )

  9. *vaja8.pl (uporaba if stavkov, indeksov itn if ($jj > 0) {print PISIV "$instr\n"; } if ($ii > 40) {$jj++;} $ii++; )

  10. *vaja9.pl (podatki se tudi zapisejo v datoteko izhod1.txt, ki se dopolnjuje zaradi ukza >>\n)

  11. *vaja10.pl

  12. *vaja11.pl

  13. *vaja12.pl

    *vaja12_1.pl

  14. *vaja13.pl (sestavljanje stringov, stavek foreach itn)

  15. *vaja14.pl

  16. *vaja15.pl

  17. *vaja16.pl (#!/usr/bin/perl ### Program za izpis vsebine URL naslova use LWP::Simple; $content = get( "http://131.54.133.44/cgi-bin/ProductSearch.cgi?history=0&fmt=ll&form=20&frame=_top&prdid=AC&T=l&sub=SN+SM+SI&B1=+SUBMIT+&icao=14015" ) or die $!; print "$content";)

  18. *vaja17.pl (### Program za izpis časa in uporabo dveh podprogramov: izračun zaporednega dneva v letu in izračun dneva in meseca iz zaporedneva dneva v letu #podprogram za izračun julijanskega (zaporednega) dneva: VHOD -> dan, mesec, leto; IZHOD -> zaporedni dan)

  19. *zamenjaj_replace01.pl ( $string = "Hello World"; print $string . "\n\n"; # NACIN 1 zamenja Hello z Goodby $str_regreplace =~ s/Hello/Goodbye/; #Prints 'Goodbye World' print $str_regreplace . "\n";)

  20. *vaja18.pl (ftp v perlu:
    #poveľem se na server HMLJK
    $ftp = Net::FTP->new("hmljk.rzs-hm.si", Debug => 0);
    if (defined($ftp) ) {
    #logiranje na HMLJK
    $ftp->login("vicar","dfdfsdf") or die("logiranje na HMLJK ni uspelo!!! \n");
    #spremenim pot (grem v ustrezen direktorij)
    $ftp->cwd($pot) or die("problem pri spremembi poti na HMLJK \n");

    #sledi prenos datoteke
    $ftp->get("$datoteka",$pot_ksebi."/$datoteka") or die("Problemi pri prenosu $ime !!!!!!!!");

    }
    $ftp->quit;

  21. *vaja19.pl (zaokrozevanje stevil)
    ali
    $manj_decimalk=sprintf("%.2f",$vec_decimalk);
    Zgornji ukaz naredi, da se številka $vec_decimalke zaokrozi na 2 decimalki.

  22. *vaja20.pl (klicanje zunanjih podprogramov , recimo - sestej, odstej - v Perlu) v p1.pm (definicija zunanjih podprogramov, paketov *.pm)

  23. *vaja21.pl (ftp, konektiranje na bazo, manipuliranje z baznimi tabelami:
    use lib "/home/zorkec/perllib/lib/site_perl/5.005/"; #logiranje na amebo;
    $conn = Pg::connectdb("host=virga port=5432 dbname=ameba user=base password=abcdefghijklmno");
    ( PGRES_CONNECTION_OK eq $conn->status ) or die "!!!PROBLEM PRI POVEZAVI Z BAZO: ",$conn->errorMessage;

    $stari_="stolpec1='$vrstica[0]' and stolpec2='$vrstica[1]' and stolpec3='$vrstica[2]'";
    $stari_="stolpec1='$vrstica1[0]' and stolpec2='$vrstica1[1]' and stolpec3='$vrstica1[2]'";

    #updatanje podatkov: namesto $stari bomo sedaj insertirali $novo
    $zamenjaj="UPDATE depese_dekodirane SET $novi WHERE $stari";

    #Izvedi ukaz: update v tabeli depese_dekodirane
    $result3=$conn->exec($zamenjaj);
    )

  24. *vaja22.pl (manipuliranje z datumi, sistemski cas in datum itn)
    use Date::Pcalc qw(:all);
    ($sec,$min,$hr,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
    ($leto2, $mesec2, $dan2) = Add_Delta_Days($leto2, $mesec2, $dan2, 1); # dodamo en dan zaradi zanke
    ($leto1, $mesec1, $dan1) = Add_Delta_Days($leto1, $mesec1, $dan1, 10); # dodamo 10 dni

  25. Programa, ki porazdelita temperature po vlagi. Prvi program naredi porazdelitev za vse termine, drugi pa samo za temrine med 6 in 14h.
    * matricna_porazTH.pl (rabis datoteko s podatki, datoteka.dat)
    *matricna_porazTH6_14.pl (rabis datoteko s podatki, datoteka.dat)

  26. *vaja23.pl (sendEmail("janez.kranjski\@yahoo.com", "xy\@yahoo.com", "Testno posiljanje", $vsebina);)
    *vaja23_b.pl (podobno a bolje - #my $sendmail = '/usr/sbin/sendmail.postfix -oi -f posiljatelj@blabla.com -t'; - sendEmail("janez.kranjski\@yahoo.com", "xy\@yahoo.com", "Testno posiljanje", $vsebina);)

  27. *Primerjava dveh nizov - odstranjevanje prelomov (\r) - $ime=~ s/\r//;

  28. * Tvorjenje večdimenzionalne matrike
    #!/usr/bin/perl -w for ($i=0;$i<5;$i++){ for($j=0;$j<5;$j++){ $poskus[$i][$j]=$i+$j; } } for ($i=0;$i<5;$i++){ for($j=0;$j<5;$j++){ print " $poskus[$i][$j]|"; } print "\n"; }

  29. * Branje argumentov
    [janez@server programi]$ ./vaja_arg1.pl 4 12
    Vsota 4 + 12 = 16
    Deluje ...
    --------------
    Vsebina vaja_arg1.pl
    #!/usr/bin/perl -w

    # recimo da zazenem
    # ./vaja_arg1.pl 4 7
    # bere deset argumentov pri zagonu, zgoraj 4 in 7
    $arg1=$ARGV[0];
    $arg2=$ARGV[1];
    $vsota= $arg1 + $arg2;

    print "Vsota $arg1 + $arg2 = $vsota \n";
    print "Deluje ...\n"

  30. *shell, query postgres, for zanka, pisanje v datoteke

  31. *test_perl_perl.pl

  32. *perl_zazene2.pl

  33. *osnove shell, datum v shell, branje spremenljivke ...

  34. *test_datum2.sh - test dekad

  35. * seznam_dat.pl
    #!/usr/bin/perl -w
    
    # @seznam_datotek = </db/base_home/VNOS/PO5/*.po5>;     #podana pot
    # @seznam_datotek = ;     #podana pot
    @seznam_datotek = <*.a>;
    foreach $i (@seznam_datotek)
    {
    print "--- $i \n";
    }
    # ali
    while ( my $file = <*.a> ) {
    open(FILE, $file) || die "Can't open $file: $!";
    # delaj s fajli - spodaj je izpis seznama datotek
    print "$file \n";
    close FILE;
    }

  36. *split_vaja.pl
    #!/usr/bin/perl -w
    
    @seznam_datotek = </db/base_home/VNOS/PO5/*.po5>;
    foreach $i (@seznam_datotek)
    {
    print "--- $i \n";
    
    #$i=/db/base_home/VNOS/PO5/  #split razbije pot po slesih /
    
    @pot = split("/", $i);
    
    print "@pot[1], @pot[2]\n";
    
    $info = "Caine:Michael:Actor:14, Leafy Drive";
    @personal = split(/:/, $info);
    
    }
    
    #which has the same overall effect as 
    @personal = ("Caine", "Michael", "Actor", "14, Leafy Drive");
    #If we have the information stored in the $_ variable then we can just use this instead 
    $_= ("Caine", "Michael", "Actor", "14, Leafy Drive");
    @personal = split(/:/);
    #If the fields are divided by any number of colons then we can use the RE codes to get round this. The code 
    $_ = "Capes:Geoff::Shot putter:::Big Avenue";
    @personal = split(/:+/);
    #If we have the information stored in the $_ variable then we can just use this instead 
    @personal = split(/:/);
    #If the fields are divided by any number of colons then we can use the RE codes to get round this. The code 
    $_ = "Capes:Geoff::Shot putter:::Big Avenue";
    @personal = split(/:+/);
    #is the same as 
    @personal = ("Capes", "Geoff",
                 "Shot putter", "Big Avenue");
    #But this: 
    $_ = "Capes:Geoff::Shot putter:::Big Avenue";
    @personal = split(/:/);
    #would be like 
    @personal = ("Capes", "Geoff", "",
                 "Shot putter", "", "", "Big Avenue");
    #A word can be split into characters, a sentence split into words and a paragraph split into sentences: 
    $word="abcdeggg"; $sentence="ta split pa je super"; $paragraph="ta odstavek	 deluje";
    @chars = split(//, $word);
    @words = split(/ /, $sentence);
    @sentences = split(/\./, $paragraph);
    #In the first case the null string is matched between each character, and that is why the @chars array is an array of characters - ie an array of strings of length 1. 
    

  37. * kako_shell_query_pl.txt (kako pozenes v pg sql v shellu, manipulacija z datumom, pl in argumenti v shellu, ...)


  38. Kako odstranimo decimalke?
    use POSIX;
    $st=42.31;
    $st_od=floor($st); # da 42, reže decimalna mesta
    $st_zgo=ceil($st); # da 43, reže decimalna mesta, doda 1

  39. *slo_gore5.pl (imena, višina, koordinate)

  40. *

  41. *

  42. *

  43. *

  44. *

Stevilo obiskov: veliko.


števci www.izmenjava.com

Za astronomski krožek: ZORKO Vičar


RFC-822: Zorko.Vicar@guest.arnes.si


Nazaj na domačo stran.