Ich versuche, 2 Arrays und einen Verweis auf ein Unterprogramm zu übergeben. Es funktioniert gut für die Arrays, aber nicht für die Referenz "$ plistref". Wenn ich versuche, es so in der Subroutine zu verwenden, wie ich es vorher benutzt habe, funktioniert es nicht.Perl mit Bezug auf Subroutine
...
my $locPlist = "conf.plist";
my $configdict = NSDictionary->dictionaryWithContentsOfFile_($locPlist);
my $plistref = Foundation::perlRefFromObjectRef($configdict);
my @contentMatchs;
foreach (@{ $plistref->{content_match} }) {
push @contentMatchs, $_->{match};
}
....
# Process the files
_moveFile(\@files, \@contentMatchs, \$plistref);
}
sub _moveFile {
my ($files_ref, $contentMatchs_ref, $plistref_ref) = @_;
my @files = @{ $files_ref };
my @contentMatchs = @{ $contentMatchs_ref };
my $plistref = $plistref_ref;
my @spools = @{ $plistref->{SPOOLS} };
....
}
Es sagt mir für die letzte Zeile, dass „kein Hashreferenz ..“ ich nicht herausfinden kann, wie man diese ref durch das Unterprogramm zu übergeben.
EDIT: Ich habe versucht einen Workaround mit "shift" und es hat funktioniert! Es scheint nicht die beste Option tho
_moveFile($plistref, \@files, \@contentMatchs);
}
sub _moveFile {
my $plistref = shift;
my ($files_ref, $contentMatchs_ref) = @_;
my @files = @{ $files_ref };
my @contentMatchs = @{ $contentMatchs_ref };
Vielen Dank für Ihre Hilfe!
-Tim.
Ich habe das bereits versucht, $ plistref gibt "1" in der Subroutine zurück:/ – Thomas
$ plistref ist ein HASH tho – Thomas
Ich rollte die Bearbeitung zurück, die alle Details aus dieser Frage entfernte. Bitte tu das nicht, da es fast unmöglich ist, die Antworten zu verstehen. –