Thread Arrayvariable explizit initialisieren?
(5 answers)
Opened by amos at 2014-08-07 14:54
Kann mir jemand sagen warum folgende Funktion nur dann zuverlässig funktioniert wenn ich statt my @hiera; my @hiera=(); verwende?
Ich dachte, man muss mit perl-5.16 eine Arrayvariable nicht bei jedem Aufruf explizit initialisieren, wenn man die Arrayvariable am Programmanfang deklariert. Es sieht so aus, dass der Wert dieser lokalen Variable bis zum nächsten Aufruf erhalten bleibt. Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 #!/opt/third-party-apps/perl-5.16/bin/perl sub get_hier { my $node_file = $_[0]; my $search = $_[1]; my $path; my $subpath; my $gid; my @s; @ps; @hiera=(); open(F,"$node_file"); my @nodes = <F>; close F; foreach(@nodes) { chomp; @s = split("\\^"); $gid = @s[0]; if ( /$search/ ){ $path = @s[1]; } } @ps=split("~",$path); shift @ps; foreach (@ps) { $subpath = $subpath . "~$_"; foreach(@nodes) { chomp; @s = split("\\^"); if ( $subpath eq @s[1] ) {$s[0] =~ m/GID_(.+)_/; $gid = $1;} } push(@hiera,$gid); } return \@hiera; } modedit Editiert von GwenDragon: Code bitte in zuküftig [Perl] Tags! Siehe auch /bat/poard/markup_help/ Last edited: 2014-08-07 15:08:55 +0200 (CEST) |