Portál AbcLinuxu, 13. května 2025 18:48

Dotaz: Perl naplnění pole funkcí

4.3.2008 08:55 Pev | skóre: 28
Perl naplnění pole funkcí
Přečteno: 283×
Odpovědět | Admin
Řeším triviální věc v perlu, ale nějak s ní nemůžu hnout:

Chci naplnit nějaké pole pomocí funkce.

sub napln_pole() {

  my @pole;

  # naplneni pole

  return \@pole;
}

@moje_prazdne_pole = napln_pole(); # je prázdné :(

Copak je špatně?

Díky za tipy...
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

4.3.2008 08:57 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Perl naplnění pole funkcí
Odpovědět | | Sbalit | Link | Blokovat | Admin
return @pole;
popr
return unless defined wantarray;
return \@pole if wantarray;
return @pole;
4.3.2008 09:19 Pev | skóre: 28
Rozbalit Rozbalit vše Re: Perl naplnění pole funkcí
No,

return @pole; vrátí jen první prvek. Ostatní příklady nevrátí nic :-(.
4.3.2008 10:21 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: Perl naplnění pole funkcí
v tom prípade máte niečo zle v inicializácii.
sub xyz {
    my @pole = (1, 2, 3);

    return @pole;
}

my @aaa = xyz ();

print join ('-', @aaa), "\n";
# 1-2-3
4.3.2008 09:32 Jan Matis
Rozbalit Rozbalit vše Re: Perl naplnění pole funkcí
Odpovědět | | Sbalit | Link | Blokovat | Admin
#!/usr/bin/perl
use Data::Dumper;

sub napln_pole() {
        my @pole=(1,2,3,4,5);
        print Dumper(@pole);
        return \@pole;
}

my $poleref=napln_pole();
print Dumper($poleref);
my @globalpole=@$poleref;
print Dumper(@globalpole);
Som lenivy hladat dokumentaciu ale ked vracias referenciu \@pole tak ju musis priradit do skalara a nasledne pretypovat. inak mi to nikdy nefungovalo

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.