Sunteți pe pagina 1din 2

Exercitii introductive - PERL

Exemple de scripturi PERL


Pentru exersarea si intelegerea limbajului interpretat PERL, se recomanda efectuarea exercitiilor
urmatoare, sub LINUX. Interpretorul PERL este de regula inclus in mod implicit la instalarea unei
distributii de LINUX.
------------------------------------------------------

mult.pl
#!/usr/bin/perl -w
use strict;
print "\nMultiplication Table \n\n";
die("Usage: $0 <n> <n>\n") if( !defined( $ARGV[1] ) );
foreach my $i (1..$ARGV[0])
{ foreach my $j (1..$ARGV[1])
{ printf( "%4d", $i*$j ); }
print "\n";
}

-------------------------------------------------

grep.pl
#!/usr/bin/perl
# Sintaxa : grep.pl <sir_de_caractere>
# Cautare sir de caractere in unul sau mai multe fisiere
# (sau in intarea standard, STDIN)
# Sirul de caractere este dat ca si argument in linia de comanda
$sir_car = shift(@ARGV);# sirul de car este primul element din tabloul @ARGV
while (<>) {
}

# citire linii tastate de utilizator in variabila $_


# utilizare implicita a variabilei $_
if (/$sir_car/) {print ;};

# --- scriere explicita :


# while ($linie = <>) {
#
if ($linie =~ /$sir_car/) {print $sir_car;};
# }

----------------------------------------------------

lc.pl
#!/usr/bin/perl
# Sintaxa : lc.pl <fisier>
# Afiseaza numarul de linii dintr-un fisier dat ca argument in linia de c-da :
open (P, "< $ARGV[0]") || die "Eroare deschidere fisier : $!"
# open (P, $ARGV[0]) || die " Eroare deschidere fisier: $!" ;
my $i=0;
while (my $linie = <P>) {
$i++;
}
close P;
print " Numar de linii din fisierul $ARGV[0] este : $i\n\n";
---------------------------------

factorial.pl
#!/usr/bin/perl w
# sintaxa : factorial.pl <n>
# calcul factorial prin functie recursiva
use strict;
sub Fact {

#functia de calcul factorial

my ($n) = @_;
return 1 if( $n == 1 || $n == 0 );
return $n * Fact($n-1);

my $n = shift;
# sau :
my $n = $ARGV[0];
print "Factorial de $n = ".Fact($n)."\n";
-----------------------------------

nbword.pl
#!/bin/perl
# sintaxa : nbword.pl
# Numara cuvintele tastate de utilizator in liniile introduse pe STDIN
while (<>) {
@tab_word = split(/\W+/);
$nword += $#tab_word + 1;
}
print "Numar de cuvinte in liniile tastate : $nbword\n";
-----------------------------------

changeString.pl
#!/bin/perl
# Sintaxa : changeString.pl <file> <sir1> <sir2>
# Inlocuieste in fisierul dat ca argument, toate aparitiile sir1 cu sir2
#
open(FISIER, "<$ARGV[0]" ); # sau : open(FISIER, $ARGV[0] );
@tab=<FISIER>;

# citire fisier intr-o tabela


# fiecare element in tabela = o linie din fisier

foreach $linie (@tab) {


$linie =~ s/$ARGV[1]/$ARGV[2]/g; # operatorul ~de cautare subsir in sir
}
close (FISIER);
open(FISIER,">$ARGV[0]");
print FISIER (@tab);
close (FISIER);
-----------------------------------

S-ar putea să vă placă și