人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

初心者用 Perl講座(http://www.bioinfo.sfc.keio.ac.jp/class/genpro/Texts/Perl4_7.htm)の課題2-1で、2つのファイルを続けて出力するスクリプトを書く問題を試してみたのですが、うまくできませんでした。(http://d.hatena.ne.jp/azaburecipes/20080928/1222586802)どなたか2つのファイルを続けて出力するプログラムの書き方がわかる方がいらっしゃったら教えてくださると助かります。お願いします。

●質問者: azaburecipes
●カテゴリ:コンピュータ インターネット
✍キーワード:Perl スクリプト ファイル プログラム 初心者
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● hirotie
●100ポイント

こうすればできるかな?

(当方動作チェックしてませんので、出来なければポイント要りません)

#!/usr/bin/perl

open(FILE, "food.txt");

while(<FILE>){

print $_;

}

close FILE;

open(FILE2, "food2.txt");

while(<FILE2>){

print $_;

}

close FILE2;

下記はダミーです

http://q.hatena.ne.jp/answer

◎質問者からの返答

迅速な回答をありがとうございます。うまく作動しました。ありがとうございます。

komadas-Computer:~ komada$ chmod +x eat3.pl

komadas-Computer:~ komada$ ./eat3.pl

I like an apple.

He ate a banana.

I cooked some corn.

She has some donuts.Pooh likes honey.

He finds honeycomb and eats honey.

He also likes honey pies.

But, he is often followed by honey bees. komadas-Computer:~ komada$


2 ● ele_dir
●100ポイント

#!/usr/bin/perl

open(FILE, "<food.txt");</p>

while(<FILE>){

print $_;

}

close FILE;

open(FILE, "<food2.txt");</p>

while(<FILE>){

print $_;

}

close FILE;

これで良いのではないでしょうか?

http://q.hatena.ne.jp

◎質問者からの返答

アドヴァイスをありがとうございます。

eat4.plという名前でためしてみました。

komadas-Computer:~ komada$ chmod +x eat4.pl

komadas-Computer:~ komada$ ./eat4.pl

open(FILE,: bad interpreter: No such file or directory

komadas-Computer:~ komada$

書き方は何通りかあるのでしょうね。ファイルの書き方など参考になります。


追記:余計な記号をとったらうまく動きました。ありがとうございます。


3 ● perlcodesample
●100ポイント

以下のようにするとファイルが3つ以上の場合も対応できます。

#!/usr/bin/perl
use strict;
use warnings;

my @files = @ARGV; #引数から複数のファイル名を受け取る。

foreach my $file ( @files ){ # ファイル名の数だけループする。
 open( my $fh, "<", $file )
 or die "Cannot open $file";
 
 while( my $line = <$fh> ){ # 1行読み込み
 print $line; # コマンドラインに出力
 }
 close( $fh );
}
__END__

http://q.hatena.ne.jp/ //ダミー

◎質問者からの返答

貴重なアドヴァイスをありがとうございます。

もしこのスクリプトを使わせてもらうときに、例えば、food.txt、food2.txt、food3.txtという3つのファイルを使いたいときは、どこに書き込んだらいいでしょうか。それともほかに作業が必要だったりするのでしょうか。かなり初歩的な質問でお手数をおかけしてすみません。


4 ● ele_dir
●100ポイント

</p>というタグが入っているためエラーが出たようです。すみません。

折角ですので、いろいろな書き方を書いてみました。

投稿のとき、なぜか分かりませんが、強制的に</p>が入ってしまいます。

実行の際は取り除いてください。

当環境では、正常に動作したので、恐らく大丈夫だと思います。

ちなみに、「<」を使ったのは、明示的に、ファイルの読み取り、書き込みを示したかったためです。

この向きを逆にすると、ファイルを作成します。下記、例。

なお、コメント欄を開けていたければ、以降、そちらに記入いたします。

http://q.hatena.ne.jp

※\は半角の¥記号です。どうも、ここに投稿すると、強制的に変換されるようです。


-------------------------------

#!/usr/bin/perl

print "test 0\n";

open(FILE, ">test.txt");

print FILE "test\n";

close(FILE);



#</p>を除いたたももの。

print "test 1\n";

open(FILE, "<food.txt");</p>

while(<FILE>){

print $_;

}

close FILE;

open(FILE, "<food2.txt");</p>

while(<FILE>){

print $_;

}

close FILE;



#$_が無くても、$_だけは特殊なので動いてくれる。

print "test 2\n";

open(FILE, "<food.txt");</p>

while (<FILE>){

print ;

}

close FILE;

open(FILE, "<food2.txt");</p>

while(<FILE>){

print ;

}

close FILE;



#同じスクリプトは不要なので、ファイル名だけ呼び出して、あとはまとめてみた。 ここでは、配列を使用。

print "test 3\n";

@file_name = ("food.txt","food2.txt");

while(<@file_name>){

open(FILE, "<$_");

while (<FILE>){

print $_;

}

}



#forでも似たようなことができる

print "test 4\n";

@file_name = ("food.txt","food2.txt");

for $file (@file_name){

open(FILE, "<$file");

for $line (<FILE>){

print $line;

}

close FILE;

}

◎質問者からの返答

いろいろな書き方を教えてくださってありがとうございます。それぞれの方法を試してみて、すべて動かすことができました。(http://d.hatena.ne.jp/azaburecipes/20080929/1222669288)いくつもの書き方を試して動かしてみて、何か大事なことを学んだような気がします。


5 ● perlcodesample
●100ポイント

>もしこのスクリプトを使わせてもらうときに、例えば、food.txt、food2.txt、food3.txtという

>3つのファイルを使いたいときは、どこに書き込んだらいいでしょうか。

>それともほかに作業が必要だったりするのでしょうか。

>かなり初歩的な質問でお手数をおかけしてすみません。

このスクリプト名を sample.pl で保存したとすると、

perl sample.pl food.txt food2.txt food3.txt

としてコマンドライン引数でファイル名を渡してあげます。

また

perl sample.pl food.txt food2.txt food3.txt > output.txt

とすると、ディスプレイでなくファイルに出力できます。

http://q.hatena.ne.jp //ダミー

◎質問者からの返答

お返事が遅くなってすみません。perlcodesampleさんのアドヴァイスをたよりに試してみたのですが、うまく動かすことができませんでした。(http://d.hatena.ne.jp/azaburecipes/20080930/1222740255)どこか間違っているところや、抜けているところがあったらアドヴァイスをいただけると助かります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ