Stefan: Problem IF Anweisung

Hallo zusammen,

ich habe folgendes Mini-Skript:

#!/usr/bin/perl -w
use warnings;
use CGI::Carp qw(fatalsToBrowser);

my $myc = "1-2-3-4-5-6-7-8-9";

if ($myc) {my @number = split(/-/, $myc);}

weitere Befehle....

1;

Die Variable $myc hat doch einen Wert durch die Zuweisung.

Warum wird aber nicht der Befehl my @number = split(/-/, $myc); ausgeführt?

Weiss jemand Rat?

  1. Hallo,

    if ($myc) {my @number = split(/-/, $myc);}

    wird doch ausgeführt, allerdings füllst du das array @number welches nur für diesen block gilt:

      
    {my @number = split(/-/, $myc);}  
    
    

    gruss

    --
    no strict;
    no warnings;
    79.78 cups of Coffee (Brewed) + Me = Death
    Reklame ist die Kunst, auf den Kopf zu zielen und die Brieftasche zu treffen.
  2. Hi,

    #!/usr/bin/perl -w
    use warnings;
    use CGI::Carp qw(fatalsToBrowser);

    my $myc = "1-2-3-4-5-6-7-8-9";

    if ($myc) {my @number = split(/-/, $myc);}

    Die Variable $myc hat doch einen Wert durch die Zuweisung.
    Warum wird aber nicht der Befehl my @number = split(/-/, $myc); ausgeführt?

    Wie hast du das festgestellt, dass der Befehl nicht ausgeführt wird? Ich konnte das nämlich mit einem print 'foo'; (oder so) im if nicht nachvollziehen; wird brav ausgeführt.

    Ich tippe eher darauf, dass du nicht auf @number zugreifen kannst, da du es innerhalb des ifs mit my deklariert hast. Deklariere es vorher mit

    my @number;

    und es ist überall im Skript verfügbar.

    HTH

    Margin-Auto

    1. Hi Margin-Auto,

      "Ich tippe eher darauf, dass du nicht auf @number zugreifen kannst, da du es innerhalb des ifs mit my deklariert hast."

      Ja, das war mein Problem.

      if ($myc) {my @number = split(/-/, $myc);}

      Ist denn die Var. @number durch my nur innerhalb der IF Anweisung gültig?

      1. if ($myc) {my @number = split(/-/, $myc);}

        Ist denn die Var. @number durch my nur innerhalb der IF Anweisung gültig?

        sie ist ausserhalb der geschweiften Klammer also des Blocks nicht mehr gültig.

        Struppi.