Řešení


Řešení příkladu 1.

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

Porovnání výstupu příkazu print

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

print @ovoce;	        # vlastní pole
jablkahruskysvestky     # výsledek

print "@ovoce";	        # Uzavřeno v uvozovkách
jablka hrusky svestky   # výsledek

print @ovoce."";	# Ve skalárním kontextu
3                       # výsledek


Řešení příkladu 2.

#!/usr/local/bin/perl
#
$file = 'prac.txt';		# jméno souboru je uloženo do proměnné
open(INFO, $file);	        # otevření souboru
$cislo = 0;                     # inicializace počítadla řádek
while ($radek = <INFO>) {       # čtení řádek souboru
++$cislo;                       # zvýšení počítadla o 1
print "$cislo $radek";          # tisk řádky s číslem
}                               # konec cyklu čtení 

Řešení příkladu 3.

#!/usr/local/bin/perl
#
$file = 'ceskywww.txt';	    # 	
open(INFO, $file);	    # otevření souboru
$cislo = 0;                 # inicializace proměnné cislo
while ($radek = ) {   # čtení řádku souboru
chop $radek;                # odstranění znaku konec řádky
if ( $radek ne "" ) {       # není řádek prázdný?
   ++$cislo;                # přičtení 1 do proměnné číslo
   print "$cislo $radek\n"; # opis řádku s číslem
   }                        # konec bloku pro neprázdné řádky
   else {                   # blok pro prázdné řádky
   print "$radek\n";        # opis prázdného řádku bez čísla
   }                        # konec bloku pro prázdné řádky
}                           # konec cyklu čtení 

Řešení příkladu 4.

Počítání řádek s řetězcem 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"; 
}
}
Počítání řádek s řetězcem ne nebo Ne, v předchozím řešení nahradíme vyhledávací řádek tímto řádkem:
if ( $radek =~ /[Nn]e/ ) {

Počítání řádek se slovem ne nebo Ne, v předchozím řešení nahradíme vyhledávací řádek tímto řádkem:
if ( $radek =~ /\b[Nn]e\b/ ) {

Použití implicitní proměnné $_:

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


Řešení příkladu 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 (první dvojice stejných znaků není v závorkách)
$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 předání řetězce pomocí parametru
Vyhledávací řádek je potřeba v předcházejícím řešení nahradit řádkem
if ( $radek =~ s/${ARGV[0]}/\(${ARGV[0]}\)/g ) {


Řešení příkladu 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);