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」でも買いたいのですが,金が……(^^;;
B-Cus
1999/07/14(水) 18:28:15
[[解決]]
> 「プログラミングPerl」でも買いたいのですが,金が……(^^;;
別に本を買わなくても、他で同等の知識を得られるならいいんですがね。
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perlref.html
http://www.kt.rim.or.jp/%7ekbk/perl5.005/perllol.html
http://www.kt.rim.or.jp/%7ekbk/perl5.005/index.html
しかし、
本を買う→対価を払って知識を買う→読まねばもったいない→集中して読む
という利点があるので(誰にでもあてはまるとは言いませんが)、それなりの
書籍を買うことをお勧めします。
ST
1999/07/14(水) 18:28:24
[[解決]]
.
[上に]
[前に]
[次に]