0
ファイルを1行ずつ読み込んで解析しようとしていますが、ファイルの最後に奇妙な動作を引き起こす種類の区切り文字があります。タブ区切りファイルの不正な文字でエラーが発生する
20111129 AMEX BHO OTCBB BHODD
20111129 AMEX LCAPA NASDAQ LMCA
コードを読み取るために簡単です:
my(@line) = <INFO>;
foreach $line(@line) {
chomp($line);
my @vals = split('\t', $line);
my $date = $vals[0];
my $old_exch = $vals[1];
my $old_symb = $vals[2];
my $new_exch = $vals[3];
my $new_symb = $vals[4];
print "0> date '$date'\n";
print "1> old Exch '$old_exch'\n";
print "2> old symb '$old_symb'\n";
print "3> new Exch '$new_exch'\n";
print "4> new symb '$new_symb'\n";
出力は次のように表示されます
0> date '20111129'
1> old Exch 'AMEX'
2> old symb 'BHO'
3> new Exch 'OTCBB'
'> new symb 'BHODD
ここ
は、私がどのように見えるが、読んでいるファイルの行は何であります
このように、各行の最後には、後に '印刷する文字があるようですラインの始めに、そこに印刷すべき4を拭き取ってください。これは、行の先頭まで印刷が発生しているはずの場所をリセットする文字のようなものです。この不正なキャラクターを「追い出す」方法はありますか?あるいは私のコードに何らかのバグがあるかもしれませんが、私は他のスクリプトと同様のことをしています...
ありがとうございました!
ドン
cool thanks man!私はこれを行うことでそれを修正しました:cat Changes.AMEX.0202.txt | sed 's/\ r //'> out –
追加のプロセスをスキップします。 sedは引数として指定されたファイル名から入力を受け取ります:sed '...' Changes.AMEX.0202.txt> out – JRFerguson
@JRFerguson:もっとも低コストのソリューションは、Perl自体で置換を行うことです。 – choroba