Perl практика

         

Использование подпрограмм.


#!/usr/local/bin/perl -w %words = qw( fred camel bamey llama betty alpaca irina alpaca ); print "What is you name? "; $name = <STDIN&gt ; chomp ($name); if($name =~ /^german\b/i) { print "Hello, German! How good of you to be here!\n"; } else { print "Hello, $name! \n"; print "What is a secret word? "; $guess = <STDIN&gt ; chomp($guess); while(! good_word( $name, $guess )) { print "Wrong, try again. What is a secret word? "; $guess = <STDIN&gt ; chomp($guess); } }

sub good_word { my($somename, $someguess) = @_; $somename =~ s/\W.*//; $somename =~ tr/A-Z/a-z/; if($somename eq "german") { return 1; } elsif(($words{$somename} "grouhno") eq $someguess) { return 1; } else { return 0; } }



Использование таблицы секретных слов - хеш.


#!/usr/local/bin/perl # did not use -w becouse "" %words = qw( #Perl 5.004 fred camel bamey llama betty alpaca irina alpaca ); print "What is you name? "; $name = <STDIN&gt ; chomp ($name); if($name eq "German") { print "Hello, German! How good of you to be here!\n"; } else { print "Hello, $name! \n"; $secretword = $words{$name}; if($secretword eq "") { $secretword = "grouhno"; } print "What is the secret word? "; $guess = <STDIN&gt ; chomp($guess); while($guess ne $secretword) { print "Wrong, try again. What is a secret word? "; $guess = <STDIN&gt ; chomp($guess); } }



Несколько файлов секретных слов в текущем каталоге.


#!/usr/local/bin/perl -w init_words(); print "What is you name? "; $name = <STDIN&gt ; chomp ($name); if($name =~ /^german\b/i) { print "Hello, German! How good of you to be here!\n"; } else { print "Hello, $name! \n"; print "What is a secret word? "; $guess = <STDIN&gt ; chomp($guess); while(! good_word( $name, $guess )) { print "Wrong, try again. What is a secret word? "; $guess = <STDIN&gt ; chomp($guess); } }

sub good_word { my($somename, $someguess) = @_; $somename =~ s/\W.*//; $somename =~ tr/A-Z/a-z/; if($somename eq "german") { return 1; } elsif(($words{$somename} "grouhno") eq $someguess) { return 1; } else { open MAIL, "|mail gera"; print MAIL "bad news: $somename guessed $someguess\n"; close MAIL; return 0; } }

sub init_words { while(defined($filename = glob("*.secret"))) { open(WORDLIST, $filename) die "can't open wordlist: $!"; if(-M WORDLIST >= 7.0) { die "Sorry, the wordlist is older than seven days."; } while($name = <WORDLIST&gt) { chomp($name); $word = <WORDLIST&gt ; chomp($word); $words{$name} = $word; } close(WORDLIST) die "could not open wordlist: $!"; } }



Несколько секретных слов.


#!/usr/local/bin/perl -w @words = qw(camel lama aplaca); # Perl 5.004 print "What is you name? "; $name = <STDIN&gt ; chomp($name); if($name eq "German") { print "Hello, German! Good of you to be here!\n"; } else { print "Hello, $name! \n"; print "What is the secret word? "; $guess = <STDIN&gt ; $i = 0; $correct = "maybe"; while($correct eq "maybe") { if($words[$i] eq "guess) { $correct = "yes"; } elsif($i &lt 2) { $i = $i + 1; } else { print "Wrong, try again. What is the secret word? "; $guess = <STDIN&gt ; chomp($guess); $i = 0; } } }



Обработка различных вариантов ввода.


#!/usr/local/bin/perl %words = qw( #Perl 5.004 fred camel bamey llama betty alpaca irina alpaca ); print "What is you name? "; $name = <STDIN&gt ; chomp ($name); $original_name = $name; $name =~ s/\W.*//; $name =~ tr/A-Z/a-z/; if($name eq "german") { print "Hello, German! How good of you to be here!\n"; } else { print "Hello, $original_name! \n"; $secretword = $words{$name}; if($secretword eq "") { $secretword = "grouhno"; } print "What is the secret word? "; $guess = <STDIN&gt ; chomp($guess); while($guess ne $secretword) { print "Wrong, try again. What is a secret word? "; $guess = <STDIN&gt ; chomp($guess); } }





Окончательный вариант программ.


Приветствие:

#!/usr/local/bin/perl -w init_words(); print "What is you name? "; $name = <STDIN&gt ; chomp ($name); if($name =~ /^german\b/i) { print "Hello, German! How good of you to be here!\n"; } else { print "Hello, $name! \n"; print "What is a secret word? "; $guess = <STDIN&gt ; chomp($guess); while(! good_word( $name, $guess )) { print "Wrong, try again. What is a secret word? "; $guess = <STDIN&gt ; chomp($guess); } } dbmopen(%last_good, "lastdb", 0666) die "can't dbmopen lastdb: $!"; $last_good{$name} = time; dbmclose(%last_good) die "can't dbmclose lastdb: $!";

sub good_word { my($somename, $someguess) = @_; $somename =~ s/\W.*//; $somename =~ tr/A-Z/a-z/; if($somename eq "german") { return 1; } elsif(($words{$somename} "grouhno") eq $someguess) { return 1; } else { open MAIL, "|mail gera"; print MAIL "bad news: $somename guessed $someguess\n"; close MAIL; return 0; } }

sub init_words { while(defined($filename = glob("*.secret"))) { open(WORDLIST, $filename) die "can't open wordlist: $!"; if(-M WORDLIST >= 7.0) { rename($filename, "$filename.old") die "can't rename $filename to $filename.old: $! "; } while($name = <WORDLIST&gt) { chomp($name); $word = <WORDLIST&gt ; chomp($word); $words{$name} = $word; } close(WORDLIST) die "could not open wordlist: $!"; } }

Листер паролей:

#!/usr/local/bin/perl -w while(defined($filename = glob("*.secret"))) { open(WORDLIST, $filename) die "can't open wordlist: $!"; if(-M WORDLIST >= 7.0) { die "Sorry, the wordlist is older than seven days."; } while($name = <WORDLIST&gt) { chomp($name); $word = <WORDLIST&gt ; chomp($word); write; } close(WORDLIST) die "could not open wordlist: $!"; } format STDOUT = @&lt&lt&lt&lt&lt&lt&lt&lt&lt&lt&lt&lt&lt&lt @&lt&lt&lt&lt&lt&lt&lt&lt @&lt&lt&lt&lt&lt&lt $filename, $name, $word . format STDOUT_TOP = Page @&lt&lt $%

Filename Nname Word ================ ========= ======= .

Программа последнего правильного ввода пароля:

#!/usr/local/bin/perl -w dbmopen(%last_good, "lastdb", 0666) die "can't dbmopen lastdb: $!"; foreach $name (sort keys (%last_good)) { $when = $last_good{$name}; $hours = (time() - $when) / 3600; write; }

format STDOUT = User @&lt&lt&lt&lt&lt&lt&lt&lt&lt&lt: last correct guess was @&lt&lt&lt hour ago. $name, $hours .



Переименование файлов, содержащих старые пароли.


sub init_words { while(defined($filename = glob("*.secret"))) { open(WORDLIST, $filename) die "can't open wordlist: $!"; if(-M WORDLIST >= 7.0) { rename($filename, "$filename.old") die "can't rename $filename to $filename.old: $! "; } while($name = <WORDLIST&gt) { chomp($name); $word = <WORDLIST&gt ; chomp($word); $words{$name} = $word; } close(WORDLIST) die "could not open wordlist: $!"; } }



Повышение уровня безопастности.


#!/usr/local/bin/perl -w init_words(); print "What is you name? "; $name = <STDIN&gt ; chomp ($name); if($name =~ /^german\b/i) { print "Hello, German! How good of you to be here!\n"; } else { print "Hello, $name! \n"; print "What is a secret word? "; $guess = <STDIN&gt ; chomp($guess); while(! good_word( $name, $guess )) { print "Wrong, try again. What is a secret word? "; $guess = <STDIN&gt ; chomp($guess); } }

sub good_word { my($somename, $someguess) = @_; $somename =~ s/\W.*//; $somename =~ tr/A-Z/a-z/; if($somename eq "german") { return 1; } elsif(($words{$somename} "grouhno") eq $someguess) { return 1; } else { return 0; } }

sub init_words { open(WORDLIST, "wordlist") die "can't open wordlist: $!"; if(-M WORDLIST >= 7.0) { die "Sorry, the wordlist is older than seven days."; } while($name = <WORDLIST&gt) { chomp($name); $word = <WORDLIST&gt ; chomp($word); $words{$name} = $word; } close(WORDLIST) die "could not open wordlist: $!"; }



Предупреждение о попытке доступа.


#!/usr/local/bin/perl init_words(); print "What is you name? "; $name = <STDIN&gt ; chomp ($name); if($name =~ /^german\b/i) { print "Hello, German! How good of you to be here!\n"; } else { print "Hello, $name! \n"; print "What is a secret word? "; $guess = <STDIN&gt ; chomp($guess); while(! good_word( $name, $guess )) { print "Wrong, try again. What is a secret word? "; $guess = <STDIN&gt ; chomp($guess); } }

sub good_word { my($somename, $someguess) = @_; $somename =~ s/\W.*//; $somename =~ tr/A-Z/a-z/; if($somename eq "german") { return 1; } elsif(($words{$somename} "grouhno") eq $someguess) { return 1; } else { open MAIL, "|mail gera"; print MAIL "bad news: $somename guessed $someguess\n"; close MAIL; return 0; } }

sub init_words { open(WORDLIST, "wordlist") die "can't open wordlist: $!"; if(-M WORDLIST >= 7.0) { die "Sorry, the wordlist is older than seven days."; } while($name = <WORDLIST&gt) { chomp($name); $word = <WORDLIST&gt ; chomp($word); $words{$name} = $word; } close(WORDLIST) die "could not open wordlist: $!"; }



Программа Hello.


#!/usr/local/bin/perl -w use 5.004; use strict; print "What is you name? "; $main::name = <STDIN&gt ; chomp($main::name); print "Hello, $main::name! \n";



Работа с файлами.


#!/usr/local/bin/perl -w init_words(); print "What is you name? "; $name = <STDIN&gt ; chomp ($name); if($name =~ /^german\b/i) { print "Hello, German! How good of you to be here!\n"; } else { print "Hello, $name! \n"; print "What is a secret word? "; $guess = <STDIN&gt ; chomp($guess); while(! good_word( $name, $guess )) { print "Wrong, try again. What is a secret word? "; $guess = <STDIN&gt ; chomp($guess); } }

sub good_word { my($somename, $someguess) = @_; $somename =~ s/\W.*//; $somename =~ tr/A-Z/a-z/; if($somename eq "german") { return 1; } elsif(($words{$somename} "grouhno") eq $someguess) { return 1; } else { return 0; } }

sub init_words { open(WORDLIST, "wordlist") die "can't open wordlist: $!"; while(defined($name = <WORDLIST&gt)) { chomp($name); $word = <WORDLIST&gt ; chomp($word); $words{$name} = $word; } close(WORDLIST) die "could not close wordlist: $!"; }



Распечатка списка секретных слов.


#!/usr/local/bin/perl -w while(defined($filename = glob("*.secret"))) { open(WORDLIST, $filename) die "can't open wordlist: $!"; if(-M WORDLIST >= 7.0) { die "Sorry, the wordlist is older than seven days."; } while($name = <WORDLIST&gt) { chomp($name); $word = <WORDLIST&gt ; chomp($word); write; } close(WORDLIST) die "could not open wordlist: $!"; } format STDOUT = @&lt&lt&lt&lt&lt&lt&lt&lt&lt&lt&lt&lt&lt&lt @&lt&lt&lt&lt&lt&lt&lt&lt @&lt&lt&lt&lt&lt&lt $filename, $name, $word . format STDOUT_TOP = Page @&lt&lt $%

Filename Nname Word ================ ========= ======= .



Секретное слово.


#!/usr/local/bin/perl -w print "What is you name? "; $name = <STDIN&gt ; chomp($name); $secretword = "hmm"; if($name eq "German") { print "Hello, German! Good of you to be here!\n"; } else { print "Hello, $name! \n"; print "What is the secret word? "; $guess = <STDIN&gt ; while($guess ne $secretword) { print "Wrong, try again. What is the secret word? "; $guess = <STDIN&gt ; chomp($guess); } }



Ведение базы данных.


Ведение базы данных:

dbmopen(%last_good, "lastdb", 0666) die "can't dbmopen lastdb: $!"; $last_good{$name} = time; dbmclose(%last_good) die "can't dbmclose lastdb: $!";

Получение информации из базы данных:

#!/usr/local/bin/perl -w dbmopen(%last_good, "lastdb", 0666) die "can't dbmopen lastdb: $!"; foreach $name (sort key (%last_good)) { $when = $last_good{$name}; $hours = (time() - $when) / 3600; write; }

format STDOUT = User @&lt&lt&lt&lt&lt&lt&lt&lt&lt&lt: last correct guess was @&lt&lt&lt hour ago. $name, $hours .



Practical Extraction and Report Language


Perl - Practical Extraction and Report Language (или Phatologically Eclectic Rubbish Lister).

















Выбор.


#!/usr/local/bin/perl -w print "What is you name? "; $name = <STDIN&gt ; chomp($name); if($name eq "German") { print "Hello, German! Good of you to be here!\n"; } else { print "Hello, $name! \n"; }