• ベストアンサー

文字列操作

コマンドプロンプトから A B C D と入力した場合、テキストファイルに B,C,Dと書きたいのですが、下記のように一行で書きたいのですが、??には、どのように書けば良いでしょうか? $tmp{$ARGV[1]}はキーで、Bの部分です。 $tmp{$ARGV[1]}=??; ??を、",@ARGV"とすると B,A B C D という結果になります。

質問者が選んだベストアンサー

  • ベストアンサー
  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.3

q{}の意味 http://www2u.biglobe.ne.jp/~MAS/perl/ref/q.html @ARGV[2..$#ARGV]の意味・・・perl 配列 スライスでググてください $#ARGVの意味・・・perl 配列 最後のインデックスでググってください 懸案については、 $tmp{$ARGV[1]}=q{,} . join q{,}, @ARGV[2..$#ARGV]; でいけるかと思いますが、何か設計がまずそうな気がします。 もう少し周辺のコードを書くか、何故$tmp{$ARGV[1]}というハッシュ構造にしたかを 書いてくれれば、いい回答が得られるかもしれません。

peiee
質問者

お礼

B,C,Dという結果になりました。 ありがとうございました。

その他の回答 (2)

  • ryu_chan
  • ベストアンサー率37% (69/186)
回答No.2

出力結果から想像して、こんなんではどうでしょうか? $tmp{$ARGV[1]}=join q{,}, @ARGV[2..$#ARGV];

peiee
質問者

補足

ありがとうございます。 結果は、BC,Dとなりました。 joinの引数は、q{,}と@ARGV[2..$#ARGV]みたいですが、 ,は区切り文字だと思いますが、q{}は、どういうものでしょうか? @ARGV[2..$#ARGV]は何をしているのでしょうか? $#ARGVは何でしょうか? 宜しくお願いします。

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

テキストファイルに書きたいということなのに、なんで 代入文をどう書けばいいのですかという質問になっているのでしょうか?

peiee
質問者

補足

$tmp{$ARGV[1]}=??; の後ろに print FILE %tmp; が続きます。

関連するQ&A