• ベストアンサー

スカラー変数中の改行コードでセパレーションしたい。

複数行に渡る文字列を含むデータをスカラー変数に格納したのですが 格納後にこれを改行コード(\n)をセパレータとして配列に分けたいと思っています。 データ(abc.txtd)は aaaaaa bbbbbb cccccc といったものです。 $data = "abc.txt"; @array = split (/\n/, $data); としてもうまく配列に分割してもらえないのですが、どうすればよいのでしょうか。 基本的な質問で申し訳ありませんが、どなたかよろしくお願いいたします。

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

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

> $data = "abc.txt"; > @array = split (/\n/, $data); これだと、"abc.txt" という文字列を splitすることに なりますけど? テキストファイルの各行を要素にした配列を作りたいのなら、 open my $fh, '<', "abc.txt" or die $!; chomp(@array = <$fh>); close $fh; てな感じで読み込めます。

miyakosais
質問者

補足

すいません。すでに $ff というスカラー変数に ファイルを読み込んであり、これを改行コードでセパレーションした 配列をつくりたいと思っています。 この場合も chomp(@array = <$ff>); とするだけで読み込めますでしょうか。 なぜかうまくいかないのですが、やはり open my $ff, '<', "abc.txt" or die $!; というところをしなければならないのでしょうか。

その他の回答 (1)

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

> すいません。すでに $ff というスカラー変数に >ファイルを読み込んであり、これを改行コードでセパレーションした > 配列をつくりたいと思っています。 であるなら、chompの必要はありません。 @array = split /\n/, $ff; でいいはずです。 > なぜかうまくいかないのですが、 split した結果はどうなってますか? できればファイルからどう読み込んだかと あわせて補足をお願いします。

miyakosais
質問者

補足

大変申し訳ありませんでした。 あれこれと試行錯誤していた結果、改行コードが UNIX形式(\n)ではなくMac形式(\r)になっているという とんでもなく初歩的なところに原因がありました。 大変御迷惑をおかけしました。

関連するQ&A