Ich lade einige Variablen aus der URL und möchte in mein CGI-Skript einchecken, ob sie initialisiert sind. Ich habe schnell herausgefunden, dass ich in Perl keine nicht initialisierten Werte in eine Liste schreiben kann.Verwendung von nicht initialisierten Werten in einer Liste
Mein Ansatz bestand einfach darin, die Liste zu durchlaufen und eine Switch-Variable $sucessDOM
zu verwenden (1, wenn alle Daten initialisiert worden waren und 0 an anderer Stelle).
kam ich mit auf den Punkt:
### Read data from HTML
my $mailinglist = param('mailinglist');
my $firstname = param('firstname');
my $lastname = param('lastname');
my $mail = param('mail');
my $sucessDOM = 0;
my @DOM = { $mailinglist, $firstname, $lastname, $mail };
### Data validation
for my $data (@DOM) {
if ($data eq undef) {
$sucessDOM = $sucessDOM + 1;
}
if ($sucessDOM = @DOM) {
print "@DOM\n";
$sucessDOM = 1;
}
else {
$sucessDOM = 0;
}
}
Der Ausgang ist als
[Fri Dec 22 20:30:40 2017] read_form.cgi: Use of uninitialized value $mailinglist in anonymous hash ({}) at ./read_form.cgi line 20.
[Fri Dec 22 20:30:40 2017] read_form.cgi: Use of uninitialized value $lastname in anonymous hash ({}) at ./read_form.cgi line 20.
[Fri Dec 22 20:30:40 2017] read_form.cgi: Use of uninitialized value in string eq at ./read_form.cgi line 24.
HASH(0x55c8a73eeea8)
folgt Ich kann auch nicht verstehen, warum es Fehler nur zwei Werte im Array, wenn sie alle nicht initialisierten sind , da ich das Skript direkt ausführe, ohne irgendwelche Werte zu übergeben.
'my $ successDOM = grep $ Mailingliste, $ Vornamen, Nachnamen $, $ mail;' {definiert ($ _)!} – ikegami