Perl5で配列に多次元配列の一部を代入するには?
ST
1999/07/14(水) 17:28:46
Perl5で
@foo = (['a','b','c'],['1','2','3','4'],['i','ii']);
こんな配列を作りました。
$foo[1][3]などとして呼び出すとうまくいきます。
この場合,
@var = @foo
は成り立ちます。
では,
@var = @foo[1]
というようなことをするにはどうすればよいでしょうか。
(やりたいことは分かりますね(^^;)
最初の例でいうと,@varの内容を('1','2','3','4')にしたいわけです。
B-Cus
1999/07/14(水) 17:41:34
@foo = (['a','b','c'],['1','2','3','4'],['i','ii']);
$bar = $foo[1];
foreach ( @$bar ){
print "$_\n";
}
@baz = @{$foo[1]};
foreach ( @baz ){
print "$_\n";
}
$foo[1] が指してるのは無名配列へのリファレンス。
$bar=$foo[1] は配列へのリファレンス。
@baz=@{$foo[1]} はデリファレンスしてるので、ただの配列。
たぶん。
B-Cus
1999/07/14(水) 17:50:18
ん~なんか意味不明。書き直し。
$foo[1] が指してるのは無名配列。$foo[1] は配列へのリファレンス。
よって、$bar=$foo[1] としたとき $barも配列へのリファレンスなる。
なので、中身を見るときは @$bar とデリファレンスが必要。
一方 $foo[1] をデリファレンスすると @{$foo[1]} となる。
これはただの配列。だから @bazにそのまま代入できる。
ST
1999/07/14(水) 18:09:29
なるほど。うまく行きました。ありがとうございます。
いやぁ,「プログラミングPerl」でも買いたいのですが,金が……(^^;;
ST
1999/07/14(水) 18:28:24
[[解決]]
.