• ベストアンサー

splitを使って、コンマ区切りで変数を出したいです。

こんにちは。 いつもお世話になっております。 データファイルを開き、一覧を $all_dataに入れました。 その後、 ($aa,$bb,$cc) = split(/\,/,$all_data); と書いて、変数$aa $bb $cc へ入れたいのです。 3個程度の変数に格納するのは、問題なく出来たのですが、 ($aa,$bb,$cc)を、($aa,$bb,…36個)の変数で指定した途端 $all_data の最後のデータのみ$aa $bbに入り、その後の $cc以降の変数は、空白となってしまいました。 一覧を、$all_dataに入れた後、print で一覧を出してみたのですが、 あいう,えお,かき,くけこ,…<略>… と、36個の文字が,で区切られて出てきました。 何が悪いのか判らなくて、途方にくれております…。 split を使って36個もの変数に直そうとするのが 間違いなのかな、と思って @array = split(/\,/,$all_data); として、 $aa = $array[0]; $bb = $array[1]; としてみたのですが、$all_dataの最後と、最後から 二つ目のデータが$aa $bb に入り、$cc 以降は 空白となってしまいました……。 どうか、ご指導よろしくお願い申し上げます。

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

  • ベストアンサー
  • guci-ok
  • ベストアンサー率33% (49/146)
回答No.1

なにか見落としてるんでしょ。 以下をそのまま実行してみて下さい。Windowsで。 #!Perl $all_data = 'あいう,えお,かき,くけこ,さ,し,すせそ,た,ちつ,てと,なにぬ,ねの,は,ひふへ,ほ,たちつ,て,と,なに,ぬ,ねの,ま,みむめ,もや,ゆよ,ん,あいう,えおか,きく,け,こ,さし,す,せそ,た,ちつて'; @array = split(/\,/,$all_data); print "num of array = " . @array . "\n"; for (@array) { print "$_\n"; } __END__ D:\@ai\@Perl\app>pgm1.pl num of array = 36 あいう えお かき くけこ さ し すせそ た ちつ てと なにぬ ねの は ひふへ ほ たちつ て と なに ぬ ねの ま みむめ もや ゆよ ん あいう えおか きく け こ さし す せそ た ちつて D:\@ai\@Perl\app>

sibazuke
質問者

お礼

guci-ok こんばんは。ご指導ありがとうございました。 お礼の書き込みがこんなに遅くなってしまい、誠に 申し訳ありませんでした…。 実は、試しに使ったコードとか、稚拙な注意書きなどを チマチマ消す作業をしていたのですが、大事な部分まで消してしまって……。 半泣き状態で、一からコードを書き直しておりました。 そして、何がよかったのかもわからないうちに、ちゃんと 意図通りの動きをしてくれたのです。 guci-okさんのおっしゃる通り、たぶん何かを見落として いたのだと思います。 お騒がせしてしまい、申し訳ありませんでした。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

動作から見て、 カンマが','ではなく','のように途中から全角になっていたりしませんか できたら、実際使われているソースと$all_dataを実際にprintしたもののコピーペーストしたものを補足してください。

sibazuke
質問者

お礼

BLUEPIXY様。 こんばんは。ご指導ありがとうございました。 お礼の書き込みがこんなに遅くなってしまい、誠に 申し訳ありませんでした…。 実は、ソースを見て頂けるのだから、と、コメントアウト していた、試しに使ったコードとか、稚拙な注意書きなどを チマチマ消す作業をしていたのですが、大事な部分まで消してしまって……。 半泣き状態で、一からコードを書き直しておりました。 そして、何がよかったのかもわからないうちに、ちゃんと 意図通りの動きをしてくれたのです。 お騒がせしてしまい、申し訳ありませんでした。

すると、全ての回答が全文表示されます。

関連するQ&A