• 締切済み

TXTファイルに文字を入れ込む事が出来ない

下記のような方法でファイルを書き込みたいと思っていますが、書き込まれずにいつまで立っても白紙のままです。 どうかご指摘頂けないでしょうか? お願いします。 $in_file = "oyamanew.txt"; if ( !open( IN_FILE, "+<$in_file") ){ print "INファイルのオープンに失敗しました。"; exit; } @record = <IN_FILE>; $record[0] = "$ROWKDATA[3]\n"; seek( IN_FILR, 0, 0 ); print IN_FILR @record; truncate( IN_FILE, tell( IN_FILE ) ); close( IN_FILE );

  • aeic
  • お礼率10% (60/582)
  • Perl
  • 回答数1
  • ありがとう数1

みんなの回答

noname#227796
noname#227796
回答No.1

>seek( IN_FILR, 0, 0 ); >print IN_FILR @record; IN_FILR → IN_FILE

関連するQ&A

  • 画像とtxtファイルの表示

    現在CGIでtxtファイルが表示されるように print "Content-type: text/html; charset=euc-jp\n\n"; $count = 0; $viewline = 1; open(IN, "A.txt"); while(<IN>){ if($count == ( $viewline - 1)){ $line = $_; last; } $count++; } close(IN); print "$line\n"; としています。 ここでさらに画像も一緒にCGIで表示させたいのですが、そうゆうことはできるのでしょうか? できるのであれば教えて頂きたいです。調べてみたのですがなかなか見つからなくて・・・。 よろしくお願いします。

    • 締切済み
    • CGI
  • 同じようなソースなのですが片方だけエラーが出てしまいます。

    open(test1,"+<test1.txt"); flock(test1,2); print test1 ""; truncate(test1,tell(test1)); close(test1); open(test2,"+<test2.txt"); flock(test2,2); print test2 ""; truncate(test2,tell(test2)); close(test2); open(test3,"+<test3.txt"); flock(test3,2); print test3 ""; truncate(test3,tell(test3); close(test3); foreach(test1,test2,test3){ open($_,"+<$_.txt"); flock($_,2); print $_ ""; truncate($_,tell($_)); close($_); 上の二つのプログラムなのですが前者は問題なく出来るのですが 後者はtruncateの後にor die("$!"); とおくと"No such file or directory"と表示されてしまいます。 3つともループせずにやるかforeachでやっているかだけで ソース的には同じだと思うのですが何が違うのでしょうか・・・?

    • ベストアンサー
    • Perl
  • Webプログラミング.ファイルへの保存について

    Webプログラミング初心者です. ファイルへの保存について質問です>< フォームから受け取ったデータを文字コード変更させてファイルに保存する場合 $name1=$cgi->param('name'); $name2=$cgi->param('number); このように一度変数にいれ. 次に文字コードの変換をし変換した内容を再び$name1,$name2に格納した場合, ファイルの書き出し•保存のソースコードは, if (open(FH, "form.txt")) { @file = <FH>; close(FH); unshift(@file, "$in{'name1'}\t$in{'name2'}\n"); //ココの部分です. if (open(FH, ">form.txt")) { print FH @file; close(FH); } else { print "<p>ファイルに書き込めません。</p>"; } } else { print "<p>ファイルを読み込めません。</p>"; } このような感じで良いのでしょうか? unshift(@file, "$in{'name1'}\t$in{'name2'}\n"); の変数名の部分では例題はフォームから受け取ったものを そのまま書いてある例が多くどのように記述したら良いかわかりません. 一度やってみてできなかったので他の部分にミスがあったのかと探し中ではありますが... 教えてください.お願いします><

    • ベストアンサー
    • Perl
  • ファイルから読み込んだ文字を

    ファイルから読み込んだ全角文字をあるキーワード(例えば"田中")が含んでいるか否かを判定するプログラムをつくりたいのですが、なかなか上手くいきません。ファイルをopenし中の文字を読込み、それを変数に格納、ifでeq使って判定したのですが、全角は判定してくれません。全角を判定するには一体どうしたら良いのでしょうか? $filename = "####.txt"; open( $fh, "< $filename" ) #ファイルopen or die "Cannot open $file: $!"; $key = 'キ'; #キーワードを決めて while ($c = getc $fh ) { #比較する if($c eq $key){ print "キーワードを見付けました。"; } } close(fh); getcだとおそらく全角は文字コードを読み込んでしまうような感じでしょうか?print $c "\n";とすると文字化けします。しかし、printf("%d", $c);だと何も表示してくれません。これはord関数を使わねばならないのでしょうか?それとも別な方法が?等などためしたのですが、もう分かりません。 御指導御鞭撻をよろしくお願いします。

  • loadVariablesNumについて

    フレーム1で あるボタンを押すと フレーム3で フレームアクション loadVariablesNum("~.cgi",0,"GET"); を設定しています フレーム5へいきます "~.cgi"の内容は #! /usr/local/bin/perl5 ##開ける open(GIRL,"batu.txt"); seek(GIRL, 0, 0); $a1=<GIRL>; close(GIRL); ##ふやす $a1++; ##入れなおす open(BOY,">batu.txt"); seek(BOY, 0, 0); print BOY "$a1\n"; close(BOY); ##出力 print "Content-type: text/html\n\n"; print "a1=$a1\n"; ##終わり exit; しかし 実行しても 「batu.txt」内の 数字が増えません どうしてでしょうか? directorのnetdoneのようなものが必要なのでしょうか お教え下さい

  • csvファイルを統合する

    あるディレクトリにtest1.txtとtest2.txtというカンマ区切り(拡張子はcsvではないですけど)があったとして、それらのファイルを1行ずつ読み込み、それを追加書き出しで1つのファイルに収めていこうとしています。 そこで以下のようなコードを書いてみたのですが、どうやらtest1.txtしか読み込んで書き出せていないようなのです。その原因が分からずに困っています。 $dir = 'C:/Perl/workdir'; # 対象ディレクトリ名 open MYHANDLE, ">>out.txt"; # 追加書き出しモードでファイルハンドルをオープン opendir DH, $dir or die "$dir:$!"; # ディレクトリを開く while ($file = readdir DH) { # ディレクトリにあるファイル名を取得し、$fileに格納 next if $file =~ /^\.{1,2}$/; # '.'や'..'も取れるので、スキップする open MYFILE, "$file"; # 取得したファイルを開く while (<MYFILE>) { chomp; @dat = split /,/; # 読み込むファイルは「カンマ区切り」としてレコードを読み込む。 $n = @dat; for($i=0; $i<$n; $i++){ print MYHANDLE $dat[$i]; # ファイルに追加書き出し(ファイルがなければ新規作成される) print MYHANDLE ","; # カンマ区切りで書き出していく } print MYHANDLE "\n"; # 1行読み終えるごとに改行 } close MYFILE; # i番目のファイルを読み終えたら閉じる print $file, "\n"; # 読み込み・書き出しをしたファイル名を表示する } closedir DH; close MYHANDLE;

    • ベストアンサー
    • Perl
  • flockについて

    ファイルを読み書きする場合に使用するflockですが、closeする前に別ファイルのflockは使用できるのでしょうか? テストしてみたところ、うまくいってるような気もするのですが、確証が持てないので質問させていただきました。 例) $file1="file1.txt"; $file2="file2.txt"; open(OUT,"+<$file") flock(OUT,2); $count1=<OUT>; open(DAT,"<$file2") flock(DAT,1); $count2=<DAT>; close DAT; $count=$count1+$count2; truncate(OUT,0); seek(OUT,0,0); print OUT "$count "; close OUT; ちょっとあえて複雑な書き方としてみましたが、上記のようにflockを使ってる最中に別ファイルのflockを使用することは出来ますでしょうか? 参考URLでも結構ですので、どなたかよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • 文字列の抽出

    指定したファイルの中から'<'と'>'とで囲まれた部分文字列を抽出したいのですが方法がわかりません。どのようにしたらできるでしょうか? *ファイルは制御コードが混じっているのでバイナリとして扱わないといけないかもしれません。 よろしくお願い致します。 ------------------------------------------------- open(IN, "test.dat"); open(OUT, "> out.txt"); binmode(IN); while (<IN>) { /^<(\w+)>$/; print OUT "$1\n"; } close(IN); close(OUT);

    • ベストアンサー
    • Perl
  • tsvファイルの読み込みエラー

    ファイル読み込み後、内容表示するプログラムをつくったのですが、tsvファイルを読み込むとWEB画面には何も表示されず真っ白になってしまいます(普通のtxtファイルでもタブが入っていると表示しません)。tsv読み込み時は何か設定が必要なのでしょうか? #!/usr/local/bin/perl print "Content-Type: text/html\n\n"; print "<html>\n"; print "<head><title>サンプル</title></head>\n"; print "<body>\n"; if (open(FH, "data/block.txt")) { @file = <FH>; close(FH); print "<p>ファイルの内容は、<br>\n"; foreach $data (@file) { print "$data<br>"; } print "です。</p>\n"; } else { print "ファイルを読み込めません。"; } print "</body>\n"; print "</html>\n"; exit;

  • openでのファイルの書き込みについて

    現在、メールを受信した際に、そのメールを別のアドレスに転送し、さらにサーバーに保存する、といったプログラムを作成しています。 メールを転送する処理が無事完成し、いざ書き込みを、と思っていたのですが ファイルの書き込みがうまくできません。 メール受信時に、以下のようにメールフィルターの振り分けにて動作させています。 | /usr/bin/perl /home/hoge/public_html/piyo.cgi 書き込み処理はこのようにしています。 open(OUT, "+>foo.txt") or die "Can't open : $!"; flock(OUT, 2) or die "Can't flock : $!"; seek(OUT, 0, 0) or die "Can't seek : $!"; print OUT "piyo\n"; truncate(OUT, tell(OUT)) or die "Can't truncate: $!"; close(OUT); とくにdieで処理が終了しているわけではなく、この後の処理も正常に行われているのですが foo.txtへの書き込みが行われません。 また、メール受信時ではなく、通常アクセスでの場合はこの処理でファイルが正常に書き込まれることを確認しました。 エラーがでてとまるわけではなく、状況がわからず困っております。 皆様の知恵をお貸しください。よろしくお願いいたします。

    • 締切済み
    • CGI

専門家に質問してみよう