our $hash->{klic}=undef;
&mysub1;
&mysub2;
sub mysub1 {
for my $i (0..3) {
$hash->{klic}->[@{$hash->{klic}} + 1] = $i;
}
}
sub mysub2 {
for my $i (4..9) {
$hash->{klic}->[@{$hash->{klic}} + 1] = $i;
}
}
No a pak jsem mel nekde v programu tohle
my $hodnota = $hash->{klic}->[$index];
ovsem $index mel v te dobe hodnotu 10, ale $hash->{klic} mel jen array
[0..9].
Predpokladal jsem, ze $hodnota bude undef, ale jake bylo moje prekvapeni,
kdyz krome tohoto predpokladu to jeste vytvorilo prazdnou (undef) bunku
$hash->{klic1}[10].
Je to normalni chovani, nebo je to bug? Nemuzu o tom nic najit.
--
Petr
Skype: callto://fidokomik
Na mail uvedeny v headeru zpravy nema cenu nic posilat, konci to v PR* :-)
Odpovidejte na petr na practisoft cz
$ perl -v | head -2
This is perl, v5.8.6 built for i386-linux-thread-multi
$ perl
our $hash->{klic}=undef;
@{ $hash->{klic} }[ 0 .. 9 ] = ( 11 .. 20 );
my $len = @{ $hash->{klic} };
print "Len [$len]\n";
my $index = 10;
my $hodnota = $hash->{klic}->[$index];
my $len2 = @{ $hash->{klic} };
print "Len [$len2]\n";
__END__
Len [10]
Len [10]
$
--
------------------------------------------------------------------------
Honza Pazdziora | ade...@fi.muni.cz | http://www.fi.muni.cz/~adelton/
.project: Perl, mod_perl, DBI, Oracle, large Web systems, XML/XSL, ...
Only self-confident people can be simple.
Omlouvam se, ale podcenil jsem proces zjednoduseni prikladu :-) Ve
skutecosti je to takhle
our $hash->{klic}->[1]->{a}=1;
my $index=2;
my $neco=$hash->{klic}->[$index]->{a};
print exists $hash->{klic}->[2];
no a to vypise 1, tedy existuje.
Pripadne:
print @{ $hash->{klic} };
vypise samozrejme 2.
Neco mi unika, ale co? :-)
Leva strana sipky je lvalue. Takze zafunguje autovivifikace, jinak by
to spadlo s tim, ze $hash->{klic}->[$index] neni reference.
Man perlvar(1) nebo perlfunc(1).