Thread Arrayvariable explizit initialisieren? (5 answers)
Opened by amos at 2014-08-07 14:54

amos
 2014-08-07 14:54
#176761 #176761
User since
2014-08-07
9 Artikel
BenutzerIn
[default_avatar]
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)

View full thread Arrayvariable explizit initialisieren?