電子書籍の厳選無料作品が豊富!

70<>9<>1日目<>3<>業務の流れについての概説<>
こういった中身のtest.txtがあります。

open(READ_FILE,"<test.txt");
@file = <READ_FILE>;
@data = split(/<>/,@file);
close(READ_FILE);

open(WRITE_FILE, ">test02.txt");
print WRITE_FILE "@data";
close(WRITE_FILE);

このようにすれば、test2.txtは、次のようになると思ったのですが、

70 9 1日目pm 3 新薬開発の流れについての概説

行数を表示しているようで、「1」となります。
(ためしにtest.txtの行を増やしたらその行数を反映していました)

どこが間違っているのかお教えいただけますでしょうか。

A 回答 (3件)

splitの処理対象の引数に配列を与えることはできないので


@data = split(/<>/,@file);

@data = split(/<>/,$file[0]);
とするべきです。

また、複数行を処理するならそれなりの処理をする必要があります。

参考URL:http://www.rfs.jp/sitebuilder/perl/05/func/split …
    • good
    • 0
この回答へのお礼

ありがとうございます。その通りにしたらできました。
まだ勉強を始めたばかりで右も左もわかりませんでしたが、参考URLがすばらしいです。
しっかり勉強して、今度はもう少し高度な質問ができるようにしたいと思います。
本当にありがとうございました。

お礼日時:2005/03/21 17:12

11行目間違えてました。

すみません。
これでいけるとおもいます。
#!/Perl/bin/perl

my @file;
my @data;
my $x;
my $format;

if(open(READ,"< test.txt")){
@file = <READ>;
close(READ);

if(open(WRITE,"> test2.txt")){

foreach $x(@file){
@data = split(/<>/,$x);
$format = join(" ",@data);
print WRITE $format;
}
close(WRITE);
}
}

ご迷惑をおかけしました。
    • good
    • 0
この回答へのお礼

わざわざ直してくださって、ありがとうございます。
今度は意図通りに表示ができました。
勉強していて疑問に感じた部分を質問させていただきましたので、申し訳ありませんが、最初にお答えいただいた方を「良回答」にさせていただきます。
今後ともよろしくお願いいたします。

お礼日時:2005/03/21 17:40

#!/Perl/bin/perl



my @file;
my @data;
my $x;
my $format;

if(open(READ,"< test.txt")){
@file = <READ>;
close(READ);

if(open(WRITE,"> test2.txt")){

foreach $x(@file){
@$data = split(/<>/,$x);
$format = join(" ",@data);
print WRITE $format;
}
close(WRITE);
}
}

こういう感じでいかがでしょうか?
    • good
    • 0
この回答へのお礼

ありがとうございます。
そのまんま試してみましたが、うまく動いてくれませんでした。
myの意味もよくわからない初心者ですので、もう少し勉強してから再度検討させていただきたいと思います。
どうもありがとうございました。

お礼日時:2005/03/21 17:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!