2012-01-30 11 views
-2

私は--pager='less -R'のような長いオプションを受け入れるperlスクリプトを持っています。私はそれを-pのみに短縮したいと思います。それは速いハックです、私はperlを知らず、私はARGV配列(またはそれがperlで呼ばれているもの)の中で-pager = 'less -R'の前に-pを検索して置き換えることを前提としていますコマンドライン引数の処理を開始します。perlの@ARGVの項目を置き換えます

+0

"ページャ"のコードを検索して "p"に変更した場合どうなるのでしょうか? (元のスクリプトのコピーを保管してください)。 –

答えて

1

あなたは、迅速なハックとして

s/^-p$/--pager/ for @ARGV; 

を使用することができます。任意のオプションの値として-pを入力しないでください。また、必ず-pの後にスペースを入れてください。

0

オプションが--pager="less -R"と指定されている場合、そのスクリプトではGetopt::Longが使用されている可能性があります。それに応じて対応する変数を変更します。

+0

ポケベルをpに変更するのではなく、 '--pager = "less -R"'の代わりにリテラル '-p'を使用します。 – chriskirk

12

コアのPerlディストリビューションの一部であるGetopt::Longが間違いなく必要です。

それは迅速なハックではありませんが、それは私の意見では、引数を処理するための適切方法です。ドキュメントを読むと、そのようなことをどのくらい速く処理できるかがわかります。

+1

しかし、他の誰かが興味深いモジュールを見つけることができます。 –

+2

Getopt :: Longをいつも使うべきなのか、いくつか考えてみましょう。 http://www.perlmonks.org/?node_id=687283時間があれば、p5pからtchristの元のメッセージを読むべきです。 –

+1

であり、Perl 5がリリースされて以来、実際にはGetopt :: Longは中核となっています。 CPANをインストールする必要はありません。 –

3

なぜ、あなたは「適切な」Perlプログラミングに興味がないのですか?

couple of extra linesを追加すると傷つきますか?

use strict; 
use warnings; 
use Getopt::Long; 

my $pager = 'default value'; 
GetOptions('pager=s' => \$pager) or die "Could not load options\n"; 
関連する問題