• 締切済み

perl言語のプログラム不良

あらかじめ作った英語のテキストファイルを入力し、 文字数をカウントするプログラム(perl言語)でつくっています。 あらかたできたと思うのですが、 明らかに100文字以上あるにも関わらず なぜか3文字とカウントされます。 どこが不具合がわかる方いましたら よろしくお願いいたします。 以下が問題のプログラムです。 print"読み込むファイル名を入力してください。\n"; $input_file = <STDIN>; open(INPUT, "$input_file") or die "$!"; sub count_words{ my @ words = split(/\W+/,$_[0]); my $num_words=@ words; } $num_words = &count_words($input_file); print"単語数は$num_wordsです。"; close(INPUT);

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

> split(/\W+/,$_[0]); 単語を構成しない文字列を区切りにして分割します。 よって、「文字数」にはなりません。 > print"単語数は$num_wordsです。"; って書いてるし。 > &count_words($input_file); すでに回答がありますが、これは変数$input_fileの中身(おそらくファイル名)の単語数を数えるものです。 ファイルの単語数を数えるには、ファイルの中身を読み込む必要があります。

runaeri
質問者

補足

書き方間違えていました。 今回出すのは『単語数』です。 申し訳ございません。

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

ファイルはどこで読み込ませているつもり?

runaeri
質問者

補足

perlというファイルを作り、 そのなかにコマンドプロンプトや、つくったプログラムを保存しています。 同様にあらかじめ『英文.pl』という英文の書いたファイルをつくり保存してます。 このプログラムを実行する際、『英文.pl』と打ち込んで動かしています。 全く知識のない状態から授業で短期でやっていたので 説明が曖昧になってしまい申し訳ございません。 他に質問ありましたら、お答えします。

関連するQ&A