Perl言語に詳しい人に質問!
■ このスレッドは過去ログ倉庫に格納されています
0683”おまえ”
2008/04/13(日) 00:23:33「シンボリックリンク」というのがまず分からなかったのですが、UNIXの
概念で、エイリアスかショートカットのようなものですね。
グローバルにしているのはローカルである必要がないことと、my の理解ができていない
ためかサブルーチンにいちいち argumentを渡すのが面倒なことが理由です。
aaa=> [] の記法は知らなくて、無名の配列のアドレスを aaa というポインタで参照できる
というふうに理解しました。
eval を使ったのは次の理由です。
@cap = qw(aa po); は実は aa とpo の間に50ほどの2文字があり、このセットをもう一組
必要とします。それらの2文字で参照できる配列群の配列を設定しようとしました。
静的な配列なので、あらかじめポインタの配列を準備すればよいのでわざわざ push で
押し込む必要はないのですが、2セットを楽に準備できればと思い eval を使いました。
その結果他の手段の知識がないために、あのような妙で馬鹿馬鹿しいコードとなった
わけです。
教えてくださいましたコードを必要な部分だけにしたところ、
%acap = ( aa => [], po => []);
foreach (keys %acap){
$acap{$_}[0] = 6;
}
$acap{po}[12]=777;
print $acap{aa}[0], $acap{po}[0], $acap{po}[12];
となりまして、期待通り動作しました。最後の2行は配列が確かにできていることの
検証のつもりです。
で、%acap = ( aa => [], po => []) という記法が使えると、
%tcap = ( aa => [], po => []) としてコピー&ペーストすれば簡単に当初の目的が
達成できることになり、ややこしい eval は必要なくなりました。
皆様にはお目ざわりだったようですが、今回はこれで恙無く解決しました。
有難うございました。
■ このスレッドは過去ログ倉庫に格納されています