Reseni


Reseni prikladu 1.

#!/usr/local/bin/perl
#
# Jednoduchy program
#
$text = 'Prvni program.';
print "$text\n";		# Tisk zpravy

Porovnani vystupu prikazu print

@ovoce  = ("jablka", "hrusky", "svestky");

print @ovoce;	        # vlastni pole
jablkahruskysvestky     # vysledek

print "@ovoce";	        # Uzavreno v uvozovkach
jablka hrusky svestky   # vysledek

print @ovoce."";	# Ve skalarnim kontextu
3                       # vysledek


Reseni prikladu 2.

#!/usr/local/bin/perl
#
$file = 'prac.txt';		# jmeno souboru je ulozeno do promenne
open(INFO, $file);	        # otevreni souboru
$cislo = 0;                     # inicializace pocitadla radek
while ($radek = <INFO>) {       # cteni radek souboru
++$cislo;                       # zvyseni pocitadla o 1
print "$cislo $radek";          # tisk radky s cislem
}                               # konec cyklu cteni 

Reseni prikladu 3.

#!/usr/local/bin/perl
#
$file = 'ceskywww.txt';	    # 	
open(INFO, $file);	    # otevreni souboru
$cislo = 0;                 # inicializace promenne cislo
while ($radek = ) {   # cteni radku souboru
chop $radek;                # odstraneni znaku konec radky
if ( $radek ne "" ) {       # neni radek prazdny?
   ++$cislo;                # pricteni 1 do promenne cislo
   print "$cislo $radek\n"; # opis radku s cislem
   }                        # konec bloku pro neprazdne radky
   else {                   # blok pro prazdne radky
   print "$radek\n";        # opis prazdneho radku bez cisla
   }                        # konec bloku pro prazdne radky
}                           # konec cyklu cteni 

Reseni prikladu 4.

Pocitani radek s retezcem ne
$file = 'ceskywww.txt';		
open(INFO, $file);	
$cislo = 0;
while ($radek = ) {
chop $radek;
if ( $radek =~ /ne/ ) { # vyhledani retezce ne, pokud se najde plati vyraz v zavorce
   ++$cislo;
   print "$cislo $radek\n"; 
   }
   else {
   print "$radek\n"; 
}
}
Pocitani radek s retezcem ne nebo Ne, v predchozim reseni nahradime vyhledavaci radek timto radkem:
if ( $radek =~ /[Nn]e/ ) {

Pocitani radek se slovem ne nebo Ne, v predchozim reseni nahradime vyhledavaci radek timto radkem:
if ( $radek =~ /\b[Nn]e\b/ ) {

Pouziti implicitni promenne $_:

$file = 'ceskywww.txt';		
open(INFO, $file);	
$cislo = 0;
while () {
chop;
if ( /ne/ ) {
   ++$cislo;
   print "$cislo $_\n"; 
   }
   else {
   print "$_\n"; 
}
}


Reseni prikladu 5.

$file = 'ceskywww.txt';		
open(INFO, $file);	
$cislo = 0;
while ($radek = <INFO>) {
chop $radek;
if ( $radek =~ s/(\S)\1/\($&\)/g  ) { # nahrazeni dvojice stejnych znaku dvojici 
                                        # uzavrenou v zavorkach, dvojice je ulozena
                                        # v promenne $&
   ++$cislo;
   print "$cislo $radek\n"; 
   }
   else {
   print "$radek\n"; 
}
}
2. modifikace (prvni dvojice stejnych znaku neni v zavorkach)
$file = 'ceskywww.txt';		
open(INFO, $file);	
$cislo = 0;
while ($radek = ) {
chop $radek;
if ( $radek =~ s/(\S)\1/\($&\)/g ) {
     $radek =~ s/\((\S)\1\)/\1\1/;
   ++$cislo;
   print "$cislo $radek\n"; 
   }
   else {
   print "$radek\n"; 
}
}
close(INFO);
3. modifikace predani retezce pomoci parametru
Vyhledavaci radek je potreba v predchazejicim reseni nahradit radkem
if ( $radek =~ s/${ARGV[0]}/\(${ARGV[0]}\)/g ) {


Reseni prikladu 6.

$file = 'ceskywww.txt';		
open(INFO, $file);
	
while ($radek = ) {
chop $radek;
  if ( $radek =~ s/http:/http:/ ) {          # vyber radku s retezcem http:
    print "$cislo $radek\n"; 
    @cast = split(/ +/,$radek);              # rozdeleni radku na casti oddelene mezerami
    $i = 0;
      until ($i > $#cast) {                  # cyklus pres vsechny casti
        if ($cast[$i] =~ s/http:/http:/) {
        @prvek = split(/\//,$cast[$i]);      # rozdeleni casti obsahujici retezec http: na 
                                             # casti podle znaku /
        print "jmeno pocitace = $prvek[2]\n";
     ++$i;
     }
  }


}
close(INFO);