PAVYZDŽIAI |
1. Pirmasis pasisveikinimas su PERL pasauliu:
#!/usr/bin/perl -w
print ("Hello,
world of
PERL! \n Id 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";
#!/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) {
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 teisė
#!/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.