PAVYZDŽIAI


 

1. Pirmasis pasisveikinimas su PERL pasauliu:

    #!/usr/bin/perl -w
 
print ("Hello, world of PERL! \n I’d like to join it...\n");


2. Pasisveikinimas su vartotoju, kurio vardas įvedamas iš konsolės:

    #!/usr/bin/perl –w
  print "What is your name? ";
  $name = <STDIN>;              
# kintamajam priskiriama reikmė, įvesta iš stand.I/O srauto
  chomp ($name);                
# funkcija, panaikinanti “\n”
   
 
print "Hello, $name!\n";

   Kitas variantas

   #!/usr/bin/perl -w
  print "What is your name? ";
  $name = <STDIN>;
  chomp ($name);
  if ($name eq "Larry Wall") {
  
 
print "Hello, Larry! How good of you to be here!\n";
  } else {

   
 print "Hello, $name!\n";
  }


3. Maksimalaus elemento masyve paieška

     #!/usr/bin/perl –w
  @array = qw(1 2 5.9 8 3.88 36);
  $max = $array[0];
  print "Ivestas masyvas:";

  foreach (@array) {

   
print "$_  ";
   
$max = $_ if $_ > $max;

  }
   print "\n Maksimalus elementas  $max \n";
 


4. Lyginių masyvo elementų keitimas simboliu “*”

   #!/usr/bin/perl –w
  @array = qw(1 22 5 8 63 4 );
  print
"Masyvas pries pakietimus: @array\n";

  foreach (@array) {

     
next if $_ % 2;
     
$_ = "*";

  }
  print
"\t ir po: @array\n";

 


5. Masyvo formavimas failais, turinčių išplėtimus .pl

  #! /usr/bin/perl
  while ($file = < *.pl>){
    push(@array, $file);}
  foreach (@array){
    print "$_ \n";
  }
  print "Atbuline tvarka \n";
  foreach (reverse (@array)){
    print "$_ \n";
  }
 


6. Nežinomo žodžio spėjimas

  #!/usr/bin/perl -w
  $secretword = "llama";
  print "What is the secret word? ";
  $guess = <STDIN>;
  
chomp ($guess);
   
while ($guess ne $secretword) {

        print "Wrong, try again. What is the secret word? ";
        $guess = <STDIN>;
       
chomp ($guess);
 
}
 
print "You succeeded...\n";
 

 Panaudojame specialų PERL kintamąjį $_  ir ankstesnis pavyzdys atrodys taip:

   #!/usr/bin/perl -w
  $secretword = "llama";
  print "What is the secret word? ";
  $_ = <STDIN>;
  chomp ($_);
   
while ($_ ne $secretword) {
       
print "Wrong, try again. What is the secret word? ";
       
$_ = <STDIN>;
       
chomp ($_);
 
}
  print "You succeeded...\n";

   


 7. Fiksuoto ilgio įrašo nuskaitymas iš failo

  #!/usr/bin/perl -w
  open (F1, "input.dat") or die "Klaida atidarant faila: $!";
  $string = "1234567890";
  read F1, $string, 6;                     # Nuskaityti 6 pirmieji simboliai
  print $string, "\n";                     # $string = "One\nTw"
  read F1, $string, 6, length($string);
  print $string, "\n";                     # $string = "One\nTwo\nThre"
 close F1;

  Failas input.dat  atrodo taip:
    One
    Two
    Three

 


8. Išvedami katalogo failai, kuriems suteikta skaitymo tei

   #!/usr/bin/perl -w
   opendir (FDIR, "/usr/local/bin") or die "Klaida atidarant kataloga:
$!
";  # atidarome katalogą
   while ($name = readdir FDIR) {
     
next if –d $name;                                                      # praleidžiame,jei failas yra
     
print ("$name : readable\n") if –r $name;                              # katalogas
   }
   closedir FDIR;

 


9. Formatuotas išvedimas

   format  STDOUT =                                       # apibrėžiamas informacijos išvedimo formatas
 ===============================
  @<<<<<<<<<<<<<<<<<<<<<<<<<< |
  $name
  @<<<<<<<<<<<<<<<<<<<<<<<<<< |
  $address
  @<<<<<<<<<<<<<<<<, @< @<<<< |
  $city,     $state,    $zip
===============================
.
                                                       # taškas parodo formato pabaigą
 open (ADDRESSES, "adresai.txt") || die "Klaida atidarant addresses.txt\n";
  while (<ADDRESSES>) {
   
chomp;
   
($name,$address,$city,$state,$zip) = split(/:/);    #Faile adresai.txt laukai atskirti :
    
write;  
  }

Failas adresai.txt  atrodo taip:

Jonas:Jonaitis:
Vilnius:Lietuva:2040
Petras:Petraitis:Kaunas:Lietuva:3300
 


10. Nuorodų naudojimas paprogramių parametrų sąrašuose

#! /usr/bin/perl -w
sub params {
                    #paprogramė params(), padaugina iš 2 masyvo ir asc.masyvo elementų reikšmes
my (
$listref, $hashref) = @_;
foreach $item (@$listref) {
    $item *= 2;
 }
foreach $key (keys %$hashref) {
    $$hashref{$key} *= 2;
 }
}

@somelist = (1,2,3,4);                                  # sukuriamas masyvas
%somehash = ("one"=>5, "two"=>15, "three"=>20);         # sukuriamas asociatyvinis masyvas
print "Pradines reiksmes \n\@somelist = @somelist \n";  # atspausdinamos masyvų reikšmės
foreach $key (keys %somehash) {
    print "\$somehash{$key}=$somehash{$key};
 }
params(\@somelist, \%somehash);                          # iškviečiama paprogramė su nuorodomis į masyvus.
print "Pakeistos reiksmes \n\@somelist = @somelist \n";
foreach $key (keys %somehash) {
    print "\$somehash{$key}=$somehash{$key};
 }


11. Funkcijos my() naudojimas paprogramėse. Parodoma kaip lokalizuojami kintamieji.

  #! /usr/bin/perl -w
  sub multip {                      # paprogramė multip(), sudaugina du elementus
    my ($x, $y) = @_;               # kintamiesiems priskiriama reikšmės iš argumentų sąrašo
        return (++x * --y);
  }
  $val = multip(10, 85);
  print "(10+1) x (85-1)lygu $val \n";
  $x = 10;
  $y = 85;
  $val = multip($x,$y);
  print "(10+1) x (85-1)lygu $val \n";

 


12. Bibliotekinio failo sukūrimas ir jo pajungimas

  #Bibliotekos failas  /home/user/perllib/mylib.pl
  sub n_args {
    return $#_ +1;
  }

  #! /usr/bin/perl -w
  unshift (@INC, "/home/user/perllib");               # @INC masyve,saugomi bibliotekos failų paieškos katalogai
 
require "mylib.pl";                                 # Su unshift() @INC papilodomas nauju katalogu.
  print "Argumentu skaicius = ",n_args(1,2,38), "\n"; 
 


13. PERL modulis ir jo pajungimas

  #Modulio failas /home/user/perlmodule/myModule.pm
  package myModule;                                 # modulio apibrėžimas
  require Exporter;                                 # pajungiamas modulis Exporter
  @ISA = qw(Exporter);                              # @ISA masyve saugomi pajungtų modulių pavadinimai
  @EXPORT = qw (MyArgs);                            # nurodomi eksportuojami pagal nutylėjimą modulio kintamieji
  @EXPORT_OK = qw ($MyArgs @MyArgs %MyArgs);        # papildomi kintamieji, kurie gali būti išeksportuoti
  sub MyArgs {
    my ($x, $i);
    @MyArgs = @_;                                   # parametrai talpinami masyve
    $MyArgs = $#MyArgs + 1;                         # skaičiuojamas parametrų skaičius
    foreach $x (@MyArgs) {                          # formuojamas asociatyvinis masyvas
        $MyArgs{$x} = ++$i;
    }
   }

  #Pagrindinis failas main.pl
  #! /usr/bin/perl -w
  unshift (@INC, "/home/user/perlmodule");
  use MyModule qw(:DEFAULT $MyArgs @MyArgs %MyArgs);
  MyArgs one, two, three, four;
  print "Argumentu skaicius = $MyArgs\n";
  print "Argumentu masyvas: @MyArgs\n";
  print "Asociatyvinis masyvas:\n";
  foreach $k (keys %MyArgs) {
    print "\$MyArgs{$k}=$MyArgs{$k}\n";
  }


14. Klasės, objektai

  # Apibrėžiama klasė Staff
  #! /usr/bin/perl -w
  package Staff;
  sub new {
                                    # konstruktorius
    my (
$class, $data) = @_;
    my $self = $data;
    bless $self, $class;
    return $self;
  }

  sub setdata {                                # metodas duomenų priskirimui
    my ($self, $data) = @_;
    for $i (keys %$data) {
        $self->{$i} = $data->{$i};
    }
    return $self;
  }

  sub showdata {                               # metodas duomenų išvedimui
    my $self = shift;
    my @keys = @_;
    foreach $key (@keys) {
        print "\t$key => $self->{$key}\n";
    }
    return $self;
  }

  sub DESTROY {                                # destruktorius
    print "Naikinamas klases Staff objektas\n";
  }
  # -----------------------------------------------------------------------

  package main
  $somebody = Staff->new({"Vardas"=>"","Pavarde"=>""});            # sukuriamas objektas somebody
  $somebody->setdata({"Vardas"=>"Jonas","Pavarde"=>"Jonaitis"});
  $somebody->showdata;
 


 

15. CGI programavimas

  15.1 Pirmoji programa

  #!/usr/bin/perl
  print "Content-type: text/html \n\n";                                 # apibrėžiamas formatas
  print "<HTML><HEAD><TITLE>Pirmasis CGI skirptas</TITLE></HEAD>\n";    # lango antraštės pavadinimas
  print "<BODY>\n";
  print "<H2> Valio, man pavyko !!!!</H2>\n";                           # tekstas lange
  print "</BODY></HTML>\n";
 

  15.2 Pajungiame CGI.pm modulį

  #!/usr/bin/perl -w
  use CGI qw(:standard);
  print header(), start_html("Testavimas"), h1("PERL- CGI bandymai!");
  print p("Naudojamas CGI.pm modulis!");
  print end_html();


  15.3 Kuriame HTML formą, kurioje yra du laukai: tekstinis ir slaptažodžio.

  #!/usr/bin/perl
  print "Content-Type: text/html \n\n";
  print "<HTML>\n";
  print "<HEAD><TITLE>HTML formos testai</TITLE></HEAD>", "\n";
  print "<BODY>\n";
  print "Vartotojo registracijos forma \n";
  print "<FORM>\n";                                                       # Apibrėžiamas HTML forma
  print "<form method=\"get\" action=\"/cgi-bin/registr.pl\">\n";         # Nurodomas duomenų perdavimo metodas
  print "Įveskite prisijungimo vardą: <input type=\"text\" name =\"name\">\n";
  print " Slaptažodis: <input type=\"password\" name =\"passwd\" maxlength=8>\n";
  print "</FORM>\n";
  print "</BODY>\n";
  print "</HTML>\n";

15.4 Susirenkame info apie www serverį pasinaudodami asociatyviniu masyvu %ENV

  #!/usr/bin/perl
  print "Content-type: text/html", "\n\n";
  print "<HTML>", "\n";
  print "<HEAD><TITLE>About WWW Server</TITLE></HEAD>", "\n";
  print "<BODY><H1>About this Server</H1>", "\n";
  print "<HR><PRE>";
  print "Server Name: ", $ENV{'SERVER_NAME'}, "<BR>", "\n";
  print "Running on Port: ", $ENV{'SERVER_PORT'}, "<BR>", "\n";
  print "Server Software: ", $ENV{'SERVER_SOFTWARE'}, "<BR>", "\n";
  print "Server Protocol: ", $ENV{'SERVER_PROTOCOL'}, "<BR>", "\n";
  print "CGI Revision: ", $ENV{'GATEWAY_INTERFACE'}, "<BR>", "\n";
  print "FROM: ", $ENV{'HTTP_FROM'}, "<BR>", "\n";
  print "USER: ", $ENV{'HTTP_USER_AGENT'}, "<BR> \n";
  print "HOST: ", $ENV{'HTTP_HOST'}, "<BR> \n";
  print "<HR></PRE>", "\n";
  print "</BODY></HTML>", "\n";
  exit (0);


Dar vienas pavyzdys, greičiau tai PERL sintakses santrauka.