Utilizarea operatorilor de testare a fişierelor cu variabilele fişier filevar

116

            Operatorii de test al fişierelor se pot utiliza şi asupra variabilelor fişier filevar. Următoarea secvenţă de cod exemplifică acest lucru utilizānd operatorul –z (care testează dacă fişierul este vid) asupra variabilei fişier MYFILE:

if (-z MYFILE) {
     print ("This file is empty!\n");
}

Utilizarea argumentelor liniei de comandă ca valori

            Perl permite utilizarea argumentelor liniei de comandă prin definirea unui variabile array speciale numită @ARGV. Atunci cānd un program Perl īsi īncepe execuţia, această variabilă conţine o listă ce constă din argumentele liniei de comandă. De exemplu, comanda

perl tst46.pl word myfile1 myfile2

atribuie variabilei @ARGV lista

("word", "myfile1", "myfile2")

Un program de căutare şi numărare a cuvintelor īn unul sau mai multe fişiere

            Lansarea acestui program se face printr-o linie de comandă de forma

perl tst46.pl $a= tst12.pl tst12.pl

unde tst46.pl este numele programului care execută contorizarea, cuvāntul căutat este $a= şi tst12.pl tst12.pl sunt fişiere īn care să caute.

Secvenţă cod

 

Rezultat īn consola text

print ("Word to search for: $ARGV[0]\n");
$filecount = 1;
$totalwordcount = 0;
while ($filecount <= @ARGV-1) {
     unless (open (INFILE, $ARGV[$filecount])) {
           die ("Can't open input file $ARGV[$filecount]\n");
     }
     $wordcount = 0;
     while ($line = <INFILE>) {
           chop ($line);
           @words = split(/ /, $line);
           $w = 1;
           while ($w <= @words) {
                if ($words[$w-1] eq $ARGV[0]) {
                      $wordcount += 1;
                }
           $w++;
           }
     }
     print ("occurrences in file $ARGV[$filecount]: ");
     print ("$wordcount\n");
     $filecount++;
     $totalwordcount += $wordcount;
}
print ("total number of occurrences: $totalwordcount\n");

 

Word to search for: $a=

occurrences in file tst12.pl: 35

occurrences in file tst12.pl: 35

total number of occurrences: 70

© Cornel Mironel Niculae, 2003-2004

13-Nov-2009