- ベストアンサー
スカラー変数中の改行コードでセパレーションしたい。
複数行に渡る文字列を含むデータをスカラー変数に格納したのですが 格納後にこれを改行コード(\n)をセパレータとして配列に分けたいと思っています。 データ(abc.txtd)は aaaaaa bbbbbb cccccc といったものです。 $data = "abc.txt"; @array = split (/\n/, $data); としてもうまく配列に分割してもらえないのですが、どうすればよいのでしょうか。 基本的な質問で申し訳ありませんが、どなたかよろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> $data = "abc.txt"; > @array = split (/\n/, $data); これだと、"abc.txt" という文字列を splitすることに なりますけど? テキストファイルの各行を要素にした配列を作りたいのなら、 open my $fh, '<', "abc.txt" or die $!; chomp(@array = <$fh>); close $fh; てな感じで読み込めます。
その他の回答 (1)
- sakusaker7
- ベストアンサー率62% (800/1280)
> すいません。すでに $ff というスカラー変数に >ファイルを読み込んであり、これを改行コードでセパレーションした > 配列をつくりたいと思っています。 であるなら、chompの必要はありません。 @array = split /\n/, $ff; でいいはずです。 > なぜかうまくいかないのですが、 split した結果はどうなってますか? できればファイルからどう読み込んだかと あわせて補足をお願いします。
補足
大変申し訳ありませんでした。 あれこれと試行錯誤していた結果、改行コードが UNIX形式(\n)ではなくMac形式(\r)になっているという とんでもなく初歩的なところに原因がありました。 大変御迷惑をおかけしました。
補足
すいません。すでに $ff というスカラー変数に ファイルを読み込んであり、これを改行コードでセパレーションした 配列をつくりたいと思っています。 この場合も chomp(@array = <$ff>); とするだけで読み込めますでしょうか。 なぜかうまくいかないのですが、やはり open my $ff, '<', "abc.txt" or die $!; というところをしなければならないのでしょうか。