Keskustelut - Python / Ruby / Perl - Aliohjelman taulukko pääohjelmaan


NationalAcrobat 15:55 16.7.09 
Yritän saada aliohjelmassa tekstitiedostosta luetun pohjalta luodun taulukon kopioitua pääohjelman taulukkoon.

Pääohjelma:


Perl
...
require "/var/www/cgi-bin/lue.pl";

...
my @tunnukset = &lue_taulukkoon("pelaajat") || @oletustunnukset;

...
 


Aliohjelma:


Perl
...
my $datatiedosto = '/home/data/tunnukset.txt';
my @data = ();

if ( (-e $datatiedosto) && (-s $datatiedosto) ) {
    if (open(DATA, "<$datatiedosto")) {
        @data = <DATA>;
        close(DATA);
    }
}

sub lue_taulukkoon {
   
    my ($osio) = @_;
    my (@taulu) = ();
    my $rivi;
    my $ok = 0;
   
    if ( ($osio) && (@data > 0) ) {
       
        foreach $rivi (@data) {
           
            # Osio alkaa tästä
            if ($rivi =~ /^\[$osio\]$/) {
               $ok = 1;
            }
           
            # Osion sisältö
            elsif ( ($rivi =~ /^([A-Z\.-]+)$/i) && ($ok == 1) ) {
                push(@taulu, $1);
            }
           
            # Osio loppuu tähän
            elsif ( ($rivi =~ /^\[\/$osio\]$/) && ($ok == 1) ) {
                return @taulu;
            }
           
        }
       
    }
   
}
1;
 


Taulukon @tunnukset sisältönä näyttäisi kuitenkin olevan taulukon @taulu solujen lukumäärä, eikä vastaavat solut. Mitä teen väärin?
ChickenCount 14:17 21.7.09 

Perl
my @tunnukset = lue_taulukkoon("pelaajat");
@tunnukset = @oletustunnukset unless @tunnukset;
 


|| operaattori palauttaa vasemman puolen arvon skalaarina (@taulu skalaarina on taulun pituus).
NationalAcrobat 06:31 22.7.09 
Erittäin hienoa, kiitos - nyt toimii niinkuin pitääkin :) Eipä tullut mieleenkään, että ongelma johtuisi || operaattorista...