Thread Text-Filter: Scriptproblem (6 answers)
Opened by Taulmarill at 2006-01-26 14:36

Strat
 2006-01-26 17:54
#28387 #28387
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Code: (dl )
m/$key_word/i 

kann probleme bereiten, wenn in $key_word irgendwelche regex-sonderzeichen vorkommen, z.B.
Code: (dl )
$key_word = "(abc";

ergibt einen fehler. deshalb $key_word immer quoten
Code: (dl )
m/\Q$key_word\E/

Code: (dl )
my ($name, $value) = split(/=/, $pair);

kann problematisch sein, weil z.B. bei abc=def=3da das 3da einfach verschuett geht. ein wenig sicherer ist:
Code: (dl )
my ($name, $value) = split(/=/, $pair, 2); # teile nur in 2 teile auf

dann waere $value = "def=3da" und man kann zumindest ueberpruefen, ob in $value ein = vorkommt (falls das = kein gueltiges zeichen von $value ist)
Code: (dl )
my $FORM{my $name} = $value;

hat mehrere probleme:
1. my $FORM{$name} geht nicht; wenn du einen hash deklarieren willst:
Code: (dl )
1
2
3
4
my %FORM;
$FORM{schluessel} = 'wert',
# oder
my %FORM = (schluessel => 'wert');

du kannst nicht einen teil eines hashes mit my deklarieren (das wuerde nur eventuell mit local funktionieren, aber das willst du nicht)

2.
Code: (dl )
$FORM{my $name} = $value;

my $name hat noch keinen wert, weil es eben erst deklariert wurde. es ist also gleichbedeutend mit
Code: (dl )
$FORM{undef} = $value;

undef ist zwar ein gueltiger Wert fuer einen hashschluessel, aber den willst du wohl nicht haben. my deklariert eine voellig neue variable; du willst jedoch das schon vorhandene $name haben, also kein my, sondern eher sowas wie:
Code: (dl )
1
2
3
my %FORM = ();
my ($name, $value) = split(/=/, $pair, 2);
$FORM{$name} = $value;


ich glaube, meine "Einfuehrung in Perl" von meiner HP unter Vortraege wuerde dir nicht schaden...\n\n

<!--EDIT|Strat|1138290931-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/

View full thread Text-Filter: Scriptproblem