• ベストアンサー
  • 困ってます

Perl 書き込み行の順番、読み込み

  • 質問No.7016626
  • 閲覧数232
  • ありがとう数2
  • 気になる数1
  • 回答数1
  • コメント数0

お礼率 72% (98/136)

#!/usr/bin/perl

require "cgi-lib.pl";
print "Content-type: text/html\n\n";

############ 書き込み #############
$file = "sample.txt";
print qq!
<font size="1">コード入力<form method=POST action="./houkoku.cgi">
<input type="text" name="rank">
<br><br>
<input type="submit" value="送信">
</form>!;
use CGI;
$query = CGI->new;
$rank = $query->param('rank');
open( WRITE, ">> $file" );
print WRITE"$rank\n";
close ( WRITE );


############ 読み込み #############

print "<table border=1>";

open( READ, "<$file" );
$adam = <READ>;
while( $adam = <READ> )
{
chomp ( $adam );
@column = split(",",$adam);
print "<tr><td>@column[0]</td></tr>";
}
close(READ);

__END__

のようにして、送信されたものを表示していくようにしたいのですが、
新しい書き込みが下段に追加されてい行きます。
新しいものを上段へ表示したいのですが、
どのようにしたら良いでしょうか?

sample.txtにも、新しいものが下に記入されています。
上段への書き込みのやりかたをご教授いただけたらと思います。、

よろしくお願いします。

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 64% (120/185)

既存のファイルの先頭に行を追加することはできないので、ファイルを全部読み込んでから書き出すことになります。なお、事前に対象のファイルを逆順にしておく必要があります。

> open( WRITE, ">> $file" );
> print WRITE"$rank\n";
> close ( WRITE );



open( READ, "<$file" );
@lines = <READ>;
unshift @lines, "$rank\n";
open( WRITE, "> $file" );
print WRITE @lines;
close( WRITE );
お礼コメント
spider32

お礼率 72% (98/136)

ありがとうございます!解決しました!
投稿日時:2011/09/23 09:24
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ