アプリ版:「スタンプのみでお礼する」機能のリリースについて

>AA A AAA
aaaaaaaaaaaaaaa
aaaaaaaaaaaa
>BBB BB B
bbbbbbbbbbbbbbb
bbbbbbbbbbbbbbb
bbbbbbbbbbbbbb



こういった形式でテキストが入った大きいサイズのひとつのファイルを

・ファイル名
AA A AAA
・テキスト内
>AA A AAA
aaaaaaaaaaaaaaa
aaaaaaaaaaaa

・ファイル名
BBB BB B
・テキスト内
>BBB BB B
bbbbbbbbbbbbbbb
bbbbbbbbbbbbbbb
bbbbbbbbbbbbbb

となるように個別に出力させたいのですがどのようにすればよいでしょうか?


#!/usr/bin/perl -w
use strict;

my $first;
my $file;

$first = 1;
open(IN,"分割前ファイル");
foreach(<IN>) {
if ( /^>(.*)/ ) {
if ($first == 0 ) { close(OUT); }
else {$first = 0; }
$file = $1;
$file =~ s/[\r\n]//;
open(OUT,">$file");
} else {
print OUT $1;
print OUT $_;
}
}
close(IN);


このようなプログラムを組んだのですが、出力結果はファイル名についてはいいのですが、テキスト内が思ったようにいきません。

・ファイル名
AA A AAA
・テキスト内
AA A AAAaaaaaaaaaaaaaaa
AA A AAAaaaaaaaaaaaa

このような結果になってしまいます。
どなたか対処方をわかるかたがいましたらお願いします。

A 回答 (1件)

ほとんどできてます。

がんばってください。
print OUT $1;
は最初の一発だけ出せばいいのでopenのあとに移動すればいいでしょう。
そのあとに改行(\n)も忘れずに。

この回答への補足

ありがとうございます。
print OUT $1;
を移動させることで少し目的の形に近づきました。

open(OUT,">$file");
print ">";
print OUT $1;
print "\n";
} else {
print OUT $_;
}
}
close(IN);

としたのですが、出力ファイルが

・ファイル名
AA A AAA
・テキスト内
AA A AAAaaaaaaaaaaaaaaa
aaaaaaaaaaaa

となり、テキスト内に最初の">"の文字と改行が行われません。
どうすれば改善されるでしょうか?

補足日時:2011/06/23 15:58
    • good
    • 0
この回答へのお礼

ふたつのprintの後ろにOUTを入れると解決しました。
本当にありがとうございました。

お礼日時:2011/06/23 16:12

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