3

入力ファイルを 1 行ずつ読み込みたいのですが、このファイルには不明な終了文字があります。

エディターvimもそれを認識していません。この文字を次のように表し ^A、すぐに新しい行の文字で開始します。同じですperl。これらの奇妙な行末文字を無視するため、すべての行を一度にロードしようとしました。

この文字を perl の行末として設定するにはどうすればよいですか? hexそのための特別なモジュールを使用したくありません (厳密なシステムのため)。行末の文字を (おそらくコードで) 定義したいだけです。

別のオプションは、ファイルを別のファイルに変換し、適切な行末文字を使用することです (それらを置き換えます)。sed簡単な方法(入力ファイルのようなもの)で作成できますか?ただし、すべて perl で行う必要があります。

可能です?

今、私の読書部分は次のようになります。

open (IN, $in_file);
$event=<IN>;   # read one line
4

1 に答える 1

4

あなたが言及した^A文字は、「見出しの開始」文字です。特別な Perl 変数$/をこの文字に設定できます。ただし、あなたの後に来る人 (そして別のエディターを使用する人) がコードを読み取って編集できるようにしたい場合は、次のようにします。

use English;

local $INPUT_RECORD_SEPARATOR = "\cA" # 'start of heading' character

while (<>)
{
    chomp; # remove the unwanted 'start of heading' character
    print $_ . "\n";
}

Perldocから:

$INPUT_RECORD_SEPARATOR
$/

入力レコード区切り文字、デフォルトでは改行。これは、「行」とは何かという Perl の考えに影響を与えます。

PerlMonksでの特殊文字のエスケープの詳細。

ああ、必要に応じて、VIの挿入モードで+を押してからCTRL+を押して、「見出しの開始」文字を入力できます。VCTRLA

編集:localDrtの提案に従って追加

于 2013-02-08T12:05:47.410 に答える