Exercitii Simple PERL

4
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 : $!" 1

description

sd

Transcript of Exercitii Simple PERL

Page 1: Exercitii Simple PERL

Exercitii introductive - PERLExemple 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 -wuse 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";

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

1

Page 2: Exercitii Simple PERL

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);-----------------------------------

2