プロが教える店舗&オフィスのセキュリティ対策術

perlのプログラムで、入力文の空白行を消したいのですが、上手くいきません。
詳しい方教えていただけると助かります。

質問者からの補足コメント

  • open(IN, "$ARGV[0]") || die;
    #出力ファイル名はコマンドラインから受け取る
    open(OUT, "> $ARGV[1]") || die;
    while (my $line = <IN>) {
    #空白行でない場合だけ出力ファイルに書き出す
    if ($line !~ /^\s*$/) {
    print OUT $line;
    }
    }
    close IN;
    close OUT;
    このプログラムでは、入力ファイルに変化が見られませんでした。アドバイスお願いいたします

      補足日時:2023/01/28 20:00
  • 申し訳ございません。
    出力ファイルの文章と、入力ファイルを比べたときに、変化がなかったと書こうとしていました。
    期待した処理がされずに、出力ファイルに書き出しされていました。

      補足日時:2023/01/28 20:38

A 回答 (4件)

空白行のなかに全角の空白が含まれていませんか。


全角の空白は、\sには含まれないので、空白行でないと判断されます。
    • good
    • 0

「入力ファイルに変化が見られませんでした」というのはどういうこと? そのプログラムだと入力ファイルとは別に出力ファイルがあってそっ

ちに書き出してるから, 「入力ファイル」自体は変化しないよ.
    • good
    • 0
この回答へのお礼

申し訳ございません。出力ファイルと文章と、入力ファイルの文章を比べたときに、変化がなかったことを書こうとしていました。期待した処理がされずに出力ファイルに書き出しされていました

お礼日時:2023/01/28 20:40

cat 入力文 | perl -ne 'print if /\S/'


cat 入力文 | perl -pe 's/^\s*$//'
    • good
    • 0

どのようなプログラムを書いて、どのような結果になったかを書けば、回答する人も答えやすいのではないかなあと思います。

    • good
    • 0

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