13

Perl コーディングを行っているときに私が持っている小さな煩わしさの 1 つは、入力から読み取った行を chomp することを覚えておく必要があることです。ええ、何年にもわたるコーディングの後、そうすることを覚えるのはほぼ自動的ですが、それでも面倒です。

演算子を使用して読み取られたすべての行を自動的にチョップするプラグマ、モジュール、または Perl (強く推奨されるコア モジュール) の他のものはあります<>か?

4

2 に答える 2

5

あなたがすでに言及した、不自然なソース フィルター以外に、ここであなたの目的にとって何が「ハック」と見なされるのか、私にはわかりません。これらの明白な解決策のいずれかを「ハック」と見なしますか?

  1. *CORE::readline現在のパッケージでオーバーライド
  2. *CORE::GLOBAL::readlineすべてのパッケージでオーバーライド
  3. READLINEカスタムメソッドを使用してクラスへの関連付けを処理する
  4. 演算子のオーバー<>ロード

それらはもう試しましたか?

それらの中で、最初の、またはおそらく2番目の方法が、最小限の手間でやりたいことを実行する可能性が最も高いと思います.

これらの 4 つのソリューションはすべて、純粋な Perl だけを必要とし、それ以外は何も必要としないことに注意してください。CPAN モジュールはおろか、コア モジュールさえも必要としません。

于 2012-04-14T16:45:18.570 に答える
0

あなたはすでにこれを知っていると思いますが、コマンド ライン オプションを組み合わせると、-nl必要な動作が得られます (暗黙のwhile(<>)ループが必要であると仮定すると:

$ perl -nle 'printf q{%s}, $_'

通常、2 つのオプションは、bash コマンド ライン経由で短い perl コマンドを実行するために使用されますが、スクリプトで実行することを妨げるものは何もないと思います。

#!/usr/bin/perl -nl

# puts the newline back on if you use print:
# print

# does not put the newline back on
printf '%s', $_;

この動作の簡単な説明: http://www.perlmonks.org/?node_id=324749

于 2012-04-14T17:28:29.050 に答える