• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ファイル入出力 ~perl~)

Perlを使用したファイル入出力に関する質問

このQ&Aのポイント
  • ファイル入出力を行うためのPerlプログラムを作成していますが、保存や読み込みがうまくいかず困っています。
  • 最頻出単語を表示する機能や、保存された文章の数をカウントする機能を実装していますが、うまく動作しません。
  • どなたかアドバイスをいただけないでしょうか。

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

  • ベストアンサー
  • kalze
  • ベストアンサー率47% (522/1092)
回答No.2

ファイルに保存する部分だけを説明すると。 ・ファイルを開く ・ファイルに書き出す ・ファイルを閉じる という処理が必要になります。 上記の処理は、以下の通り。 open FH, "<< $fileName"; print FH $stored; close FH; ※例外処理は記載していません。 問題は、ファイルフォーマット。 1つの文章をどのように格納するか。 それによって具体的な出力処理が変わってくるでしょう。 また実際には、ファイルを開くときにもチェックが必要でしょう。 ファイルがあるかどうかチェックして、あれば追記モードで、なければファイルを作ってから追記モードで開くか上書きモードで開いてファイルを同時に作らせるかなど。 質問者さんの書かれている処理で、ファイルに出力できない理由は、2つあります。 open FH, "< $fileName" or die; この部分で、読み込み専用でファイルをひらいていること。 print $stored; というところで、ファイルハンドラを指定しておらず標準出力に出力していること。 openのときに書き込みができるモードで開き、printでファイルハンドラを指定することで、ファイルに出力できるようになります。 とりあえずファイルへの出力に関しては以上でできるはず。

ilnmfay
質問者

お礼

回答ありがとうございます。 おかげさまで、自分で納得のいき、正確に動くプログラムを作ることができました。 的確なアドバイスありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • kalze
  • ベストアンサー率47% (522/1092)
回答No.1

>$fileName = $word . ".dat"; #word は読み込んだ最頻出語 >open FH, "< $fileName" or die; $fileaName変数に格納されているファイル名のファイルを読み込み専用で開き、ファイルハンドラをFHとする >$numberOfStory++; >print $stored; #stored はtextareaから読み込んだ文章。 $stored変数の中身を標準出力に表示 >print "\n\n\n"; 標準出力に改行を3つ出力 >close (FH); ファイルを閉じる ファイルに関連する処理がありませんが、ファイルはなんのために開いたの? >今、submitボタンによって提出された文章をサーバ上に保存するところで困っています。 ということですから、データをサーバ上のファイルに保存したいのですよね? >以下のような、ファイル入力のプログラムを書きました。 なにがしたくて? なんかやりたいことが文章にまとまっていないので、もう少しやりたいことを簡潔にまとめてもらえますか? 行いたい処理を箇条書きでいいので、順に書くとか。

ilnmfay
質問者

補足

文章がまとまっていなくてすみません。ご指摘、ありがとうございます。 textareaから文章を得る。 ↓ 得た文章中の最頻出単語を表示。 ↓ 最頻出単語ごとにデータベースを作って保存。 例えば、user1の文章の最頻出がamericaだったら、サーバ上にamerica用のファイルを作って保存。 ↓ 「もしその最頻出単語のデータベースを見たかったら、ここをクリック」 という文章を表示し、アクセスできるようにする。 例えば、上のuser1の例では、「ここ」をクリックすると、これまでのuserによってamericaファイルに保存された文章が見れる。 ↓ 同時に、ファイル内の文章の数も表示。 というのが僕のやりたいことです。 サーバに文章を保存するところで困っています。

すると、全ての回答が全文表示されます。

関連するQ&A