配列をファイルに記録するには?
[上に]
[前に]
[次に]
じぇい
1999/05/16(日) 23:57:59
要素が2つだけの配列があるんですが、それをファイルに記録するのに、
print OUT "@a[0]";
print OUT "@a[1]";
ってやってるんですが、どうも変な気がしたので質問してみました。
もっと簡単にする方法を教えてください。
ちなみにPerlの話です。
B-Cus
1999/05/17(月) 00:22:45
print OUT @a;
print OUT "@a";
print OUT join(",",@a);
print OUT join("\n",@a);
などなど。それぞれ結果が違うので試してみてください。
> print OUT "@a[0]";
そもそもこれは間違いです。-w オプションを付けてコマンドラインで
実行すると warning がでます。
print OUT "$a[0]";
が正解。
じぇい
1999/05/17(月) 01:09:21
[[解決]]
@a[0]
・・・やってしまいました。(笑)
スクリプトのほうではちゃんと$a[0]ってやってるんですけどね。
たぶん僕がやりたいのは
print OUT "@a";
のような気がします。
どうもありがとうございました。
じぇい
1999/05/17(月) 01:13:14
あっ、、すいません。解決を押してしまったのですが、、
print OUT @a;
と、
print OUT "@a";
はどう違うのですか?
下の二つが違うのはわかります。
じぇい
1999/05/17(月) 01:36:45
とりあえず結果報告します。
print OUT @a;
のほうでうまくいきました。
print OUT "@a";
のほうではうまく動作しませんでした。
何が違うのでしょうか、、?
tre
[E-Mail]
1999/05/17(月) 06:21:53
僕も、気になっていたんですが。
掲示板などを作って配列に、データをいれて、
print OUT "@data";
と、すると勝手にインデントしてしまう。
name,addr,url,msg
--name,addr,url,msg
----....
..
なぜでしょうか?
B-Cus
1999/05/17(月) 17:50:45
> print OUT "@a";
> のほうではうまく動作しませんでした。
定義済の配列に対して
print OUT "@a";
とすれば動くはずですので、試して違いを確かめてみてください。
じぇい
1999/05/17(月) 22:37:20
定義済みの配列というのはどういうことですか?(理解力に乏しくてすいません。)
上のtreさんと同じ疑問なのですが、配列を
print OUT "@a";
でファイルに保存すると勝手に空白が入ってしまいます。
なぜなのでしょうか?
B-Cus
1999/05/18(火) 01:46:03
> 定義済みの配列というのはどういうことですか?
perl4では
#!path_of_perl4
print "@a";
はエラーになりませんが、perl5では
#!path_of_perl5
print "@a";
はエラーになります。未定義(という用語が適切かどうかわかりませんが)の
@aという配列を参照しているからです。
ですから、
#!path_of_perl5
@a=(1,2,3);
print "@a";
などと一度@aを定義してから、それを参照してほしいという意味で
「定義済の配列」と書きました。
> 勝手に空白が入ってしまいます。
そういう仕様である、ということでしょうね。
print OUT @a = print OUT join("",@a)
print OUT "@a" = print OUT join(" ",@a)
じぇい
1999/05/18(火) 02:19:19
なるほど。そういう仕様なんですね。
とてもわかりやすいご説明どうもありがとうございました。
[上に]
[前に]
[次に]