Dein Problem wurde ja schon gelöst. Ich habe nochmal allgemeine Anmerkungen:
sub fill_table()
{
my $datei = $_[0]; # Dateiname
my $src_path = $_[1]; # Pfad zur Datei
my $delimiter = $_[2]; # Separator
my $header = $_[3];
...
Diese Art von Kommentaren empfinde ich als überflüssig, die schönen Variablennamen sagen doch genau das selbe. Außerdem finde ich die Art der Zuweisung nicht so schön (ist natürlich eine Gewöhnungssache).
Die runden Klammern müssen weg, hat Renee ja schon gesagt. Oder Du schreibst ($$$$) hin (vier skalare Parameter).
Es gibt neben Deiner Variante noch die Möglichkeiten
sub fill_table {
my $datei = shift;
my $src_path = shift;
my $delimiter = shift;
my $header = shift;
...
und
sub fill_table {
my ($datei, $src_path, $delimiter, $header) = @_;
...
Bei kurzen Listen und eindeutigen Namen verwende ich die unterste, bei langen Parameterlisten überlege ich mir eine andere Art der Übergabe oder wähle die mittlere Form.
Auf
$_[0] greife ich eigentlich nur zu, wenn ich den Wert der Variable wirklich ändern will.
Das heißt jetzt aber nicht, dass Du es auch so machen musst - TIMTOWDI :-)
Außerdem empfehle ich dringend die durchgehende Einschränkung von Gültigkeitsbereichen der Variablen durch Deklaration per my und Sicherstellung durch
use strict;.
Zusätzlich ist
use warnings; und Abstellen aller angemahnter Probleme eine gute Idee.
Das hier
for (0..$spalten)
{
$col=$_;
$col=$col+1;
$arrayVar->{"$z,$col"} = "$Bom[$_]";
}
scheint mir unnötig kompliziert, tut
$arrayVar->{$z . ',' . ($_+1)} = "$Bom[$_]" for 0 .. $spalten;
nicht das gleiche?
Abschließender Tipp: perldoc perlstyle\n\n
<!--EDIT|Crian|1090583676-->
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;
use strict; use warnings; Link zu meiner Perlseite