%data = (
'digits' => [1, 2, 3],
'letters' => ['a', 'b', 'c']
);
我該如何才能push
'4'
轉成$data{'digits'}
?如何將元素推入保存爲散列值的數組引用?
我是新來的Perl。那些$
,@
,%
符號看起來很奇怪,我來自PHP背景。
%data = (
'digits' => [1, 2, 3],
'letters' => ['a', 'b', 'c']
);
我該如何才能push
'4'
轉成$data{'digits'}
?如何將元素推入保存爲散列值的數組引用?
我是新來的Perl。那些$
,@
,%
符號看起來很奇怪,我來自PHP背景。
push @{ $data{'digits'} }, 4;
$ data {'digits'}返回數組引用。將@ {}放在它周圍以「解除引用」。以同樣的方式,%{}將取消引用散列引用,並引用標量引用。
如果你需要把東西放到一個散列引用,即
$hashref = { "foo" => "bar" }
您可以使用:
${ $hashref }{ "foo2" } = "bar2"
或箭頭符號:
$hashref->{"foo2"} = "bar2"
在某些方面,請將參考文獻視爲與變量名稱相同的內容:
push @{ $arrayref }, 4
push @{ "arrayname" }, 4
push @arrayname , 4
事實上,這就是「軟參考」。如果你沒有所有的嚴開啓,你可以從字面上:
# perl -de 0
DB<1> @a=(1,2,3)
DB<2> $name="a"
DB<3> push @{$name}, 4
DB<4> p @a
1234
非硬引用是符號引用。 – ysth 2010-07-11 05:29:42
對於一個充滿異國情調但非常悅目的選擇,請查看autobox::Core
CPAN模塊。
use autobox::Core;
my %data = (
digits => [1, 2, 3],
letters => ['a', 'b', 'c'],
);
$data{digits}->push(4);
$data{digits}->say; # => 1 2 3 4
見[的perldoc perldata](http://perldoc.perl.org/perldata.html)和[的perldoc perldsc](http://perldoc.perl.org/perldsc.html)有關perl的信息數據結構。 – Ether 2010-07-11 05:54:42