Farid Hajji: Perl - Einführung, Anwendungen, Referenz
2., aktualisierte und erweiterte Auflage
Addison-Wesley Longman, ISBN 3-8273-1535-2
?:if ... then ... elseforeach-Schleifenfor-Schleifen wie bei Cwhile- und until-Schleifendo { ... } while (...)-Schleifendo { ... } until (...)-Schleifenlast und nextcontinue-Blockredomap und grepeval()-Funktion
eval()
eval()-Anwendungen
undef, 0, '0', '', () # Falsche Werte
$a && $b, $a || $b, $a ^ $b, !$a # und oder xor nicht: Stark
$a and $b, $a or $b, $a xor $b, not $a # schwache Bindung
open (IFILE, "< /not/there") or die '...'; # Shortcut-Verhalten
prepare_arguments() and use_arguments(); # Shortcut-Verhalten
{ # Das ist ein Block }
code1; code2; code3; # Sequenz von Anweisungen
$result = code1, code2, code3 # Der Kommaoperator
$result = $condition ? $true_expr : $false_expr; # Ternärer Operator
if (Condition) { ... }
if (Condition) { ... } else { ... }
if (Condition) { ... } elsif { ... } else { ... }
Code if Condition;
Code unless Condition;
do { Block } if Condition
do { Block } unless Condition
&$dispatcher{$function_name}($funcarg1, $funcarg2);
foreach $key ( @list ) { ... }
for $key ( @list ) { ... }
for (init; condition; increment) { ... }
while (Condition) { ... }
until (Condition) { ... }
do { ... } while (Condition);
do { ... } until (Condition);
while ( Condition ) { ... last if Cond2; ... }
while ( Condition ) { ... next if Cond2; ... }
while ( Cond-with-Sideeffects ) { ... redo if Cond; ... }
while ( ... ) { ... } continue { ... }
code while (...); # Minischleife
code until (...); # Minischleife
@selected = grep { Selektor-Ausdruck } @input;
@transfmd = map { Transformer-Ausdruck } @input;
$oneline = <STDIN>; # skalarer Kontext
@alllines = <STDIN>; # Listenkontext
miniloop.pl |
Minischleife mit while: Erste Entity-Zeile |
perl-eval-shell.pl |
Eine primitive Perl-Shell mit eval() |
scan-badwords.pl, das eine beliebige Eingabe auf der Suche nach verbotenen Wörtern scannt. Die Liste dieser verbotenen Wörter hat eine beliebige Länge und kann durchaus etwas länger sein. Es handelt sich bei diesem Programm um eine weitere Anwendung von eval().-v-Flag dient lediglich dazu, den dynamisch erzeugten Perl-Code anzuzeigen, statt der eventuellen Warnung. Führen wir scan-badwords.pl testweise mit -v aus, ergibt sich folgende Ausgabe:
# Ausgabe von scan-badwords.pl -v. Umbrueche manuell hinzugefuegt:
farid@sun-1:~www/ex> ./scan-badwords.pl -v
if ($input =~ /shit/is or $input =~ /crap/is or
$input =~ /microsoft/is or $input =~ /xxx/is or
$input =~ /naked/is or $input =~ /sex/is or
$input =~ /porn/is) { print STDERR "Tsk, tsk...!\n"; }
/is in den Pattern-Matching-Operatoren dienen dazu, die Suche unabhängig von der Groß- oder Kleinschreibung (/i) und von Zeilenumbrüchen innerhalb des Strings $input (/s) zu machen. (1999/12/17, nach einer Frage von Matthias Fraccaro)
In Vorbereitung
In Vorbereitung
&& durch || in den Zeilen 9 und 12. (des 3. Aufzählpunktes von unten):
# 9. Zeile des 3. Aufzaehlpunktes:
if (m/$pattern1/ || m/$pattern2/ || m/$pattern3/ || ...) { ... }
# 12. Zeile des 3. Aufzaehlpunktes:
$code .= join ('/ || m/', @patterns);
[Alte Quelle]
| Last modified: $Date: 2006/05/18 12:55:43 $ FH. Search :: Sitemap :: Disclaimer :: Copyright :: Privacy |
|