マンガでよめる痔のこと・薬のこと

初歩的な質問で恐縮ですが、以下のPerlのワンライナーを、スクリプトファイルに記述するには、どのように書けば良いのでしょうか。

perl -ne "print if ( /aaa/ ); print if ( /bbb/ ); print if ( /ccc/ );" "in.txt" > "out.txt"

下記のようにしてみたのですが、ダメでした。

perl "script.pl" "in.txt" > "out.txt"

----- script.plの内容 -----
print if ( /aaa/ );
print if ( /bbb/ );
print if ( /ccc/ );
---------------------------

環境はWindowsのコマンドプロンプトです。バッチファイルでの使用を想定しています。

自分はPerlに関する知識が無いので、Perlに関するサイトも見てみたのですが、情報が膨大で、ピンポイントでこの問題を解決する情報を探し出す事が出来ませんでした。

やり方が分かる方がおられましたら、お教え頂けないでしょうか。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

であれば, 一番簡単なのは


perl -n "script.pl" "in.txt" > "out.txt"
じゃないかな?
    • good
    • 1
この回答へのお礼

再度、ご回答ありがとうございます。

No.1の補足に書かせて頂いた方法でも出来たのですが、「-n」オプションを付けるだけでも出来たのですね。スクリプトを実行する際は、オプションは付けないものだとばかり思っていました。

こちらのやり方の方が簡単ですね。「-n」オプションを使う方法でやっていこうと思います。

ご回答、本当にありがとうございました。

お礼日時:2014/07/26 14:42

オプション -n の意味はなんですか?

この回答への補足

昔、Perlについて調べていた時のメモに色々なサンプルがあったので、それの一部を引用して、ダメモトで試してみたら、無事に出来ました。文頭に「while (<>) {」を付け、文末に「}」を付け、以下のようにしたら動作しました。お手数をお掛けしてすみませんでした。ありがとうございました。

-------------------
while (<>) {
print if ( /aaa/ );
print if ( /bbb/ );
print if ( /ccc/ );
}
-------------------

補足日時:2014/07/26 14:35
    • good
    • 0
この回答へのお礼

ご回答、ありがとうございます。

WEB検索で得た情報になりますが、「-n」オプションは、「以下のループの内部にスクリプトがあるような動作する」オプションだそうです。

私は、Perlの知識が無いので、WEBで調べたものをそのまま実行しているので、オプションの意味については、調査済みではありますが、その意味を理解して使っている訳ではありません。

ご回答、ありがとうございました。

お礼日時:2014/07/26 14:04

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング