Ich schreibe ein Perl-Skript und verwende die Klasse::CSV Modul. Ich habe ein Array von Zahlen, 5 Elemente lang
$values[0] - $values[4]
Ich versuche, eine neue Zeile in die CSV-Datei einzufügen und die neue Zeile mit den Werten aus dem Array zu füllen. Ich erhalte jedoch immer wieder diese Fehlermeldung, wenn ich versuche, das Skript auszuführen:
Failed to create CSV line from line:
10252205
at /usr/lib/perl5/site_perl/5.8.8/Class/CSV.pm line 257
Class::CSV::Line::string('Class::CSV::Line=HASH(0x1f2d0f20)') called at /usr/lib/perl5/site_perl/5.8.8/Class/CSV.pm line 435
Class::CSV::string('Class::CSV=HASH(0x1f2c1c00)') called at catchmailstats.pl line 116
Hier ist der Code für die CSV-Konstruktion:
# Create csv file from the current data
my $csv = Class::CSV->new(
fields => [qw/Month NotSpam Probable Quarantine Spam Total/],
);
# Creates the first row (Headers)
$csv->add_line({
Month => 'Month',
NotSpam => 'NotSpam',
Probable => 'Probable',
Quarantine => 'Quarantine',
Spam => 'Spam',
Total => 'Total'
});
# Creates the second row (values)
$csv->add_line([$values[0], $values[1],$values[2],$values[3],$values[4], $total]);
Ich habe es auch mit dem anderen Notationsstil versucht:
# Creates the second row (values)
$csv->add_line({
Month => $values[0],
NotSpam => $values[1],
Probable => $values[2],
Quarantine => $values[3],
Spam => $values[4],
Total => $total
});
Keiner der beiden Stile hat funktioniert. Allerdings ist mir etwas aufgefallen. Die letzte Variable, $total, ist die Summe von $values[1] bis $values[4]. Diese Variable funktioniert einwandfrei.
Also meine eigentliche Frage ist: Warum wird nicht Verweise auf Elemente in meinem Array Arbeit, aber eine Summierung von Elementen aus dem gleichen Array, ohne ein Problem kompilieren? Und wie kann ich die Funktion add_line dazu bringen, meine Array-Elemente zu akzeptieren?
0 Stimmen
Mein Fehler. $Werte[1]. Ich habe die Änderung vorgenommen.