2011-01-18 11 views
3

Perlで書かれたイントラネット(約3000ファイル)を最適化する必要があります。私がしたい最初のことは、 "-w"または "use warnings;"の警告を有効にして、これらのエラーをすべて取り除き、 "use strict;"を実装しようとしています。グローバルな警告を有効にする

警告を常に使用するように指示する方法はありますか(PHPのphp.iniの設定のように)、スクリプトの最初の行に "-w"を追加する必要はありません。

/usr/bin/perlのエイリアスを作成したり、別の名前に移動して、代わりに-wフラグ(プロキシなど)を追加するのではなく、簡単なスクリプトを作成することも考えました。

どのようにデバッグしますか?

+0

3人すべてが助けてくれた回答を受け入れるのが難しい[email protected]と@Michael Carmanは私が最初に探していたものに答えてくれましたが、@Jonathan Lefflerは良いアドバイスをしました。「やめないでください。それをデバッグしますか?)... ...ジョナサン・レフラーの答えを受け入れるなら、誰も怒らないことを願っています。皆さんのお手伝いをありがとうございます。 –

答えて

9

改訂警告と厳密には厳しいです。 Big Bangのアプローチはお勧めしません。すべてのことについて警告(厳密には言えませんが)を設定します。あなたは無用の点まで警告で浸水します。

すべてに警告を適用するのではなく、スクリプトで使用されているモジュールで警告を有効にすることから始めます(そこにはありますか?コアをきれいにしてから、一度に1つずつ、周辺で作業してください。実際には、ハッシュで始まらない行を見つけて、use warnings;(そしておそらくuse strict;)を追加する単純な(Perl)スクリプトをお勧めしたいと思います。時間)ので、一度に1つのスクリプトを改装することができます。

つまり、各ファイルを実際に編集しようとするときには、おそらく実際に編集するのがよいでしょう。

ブランケットオプションを使用するだけで、問題の範囲を簡単に評価できます。完全で完全な災害か、いくつかのファイルのほんの一部の山腹です。悲しいことに、コードが警告なしで開発され、厳格であれば、「最小」よりも「災害」の可能性が高くなります。

前任者がコピーアンドペーストする傾向があり、間違った熟語がコピーされたコードで繰り返されることがあります。それぞれを修正するPerlスクリプトを書いてください。私はfix*のスクリプトを私の個人的なbinディレクトリに置いています。さまざまな変更をしています - 嫌がらせの人(または、もっと普通には長らく去った)同僚が作成した問題を修正するか、

+0

Ayup.⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠⁠ – tchrist

+0

私はすでにモジュールを修正しました。私は、すべてのスクリプトが使用するもの(cgilib.pl)と、別のスクリプトによって使用されるものを持っています。今私はそれらを修正するためにスクリプトのプールに潜入しなければなりません。私は別のことをしました。私はcgilib.plに($ 0を使って)アクセスしているスクリプトのすべてのパスを記録しました。今のところ273スクリプトだけが定期的に使用されていますので、私はそれらから始めます。スクリプトは古いものであり、まったく使用されていません。ログに登録されていない場合は、それらをバックアップサーバーにコピーし、運用サーバーから削除します。 –

+0

@radu:これはかなり典型的なようです - 古典的な80:20ルール(この場合は90:10に近いです)、スクリプトの20%が作業の大部分を行い、残りは大部分が忘れられているかほとんど使用されていません。どのスクリプトが使用中であるかを記録することは非常に賢明です。これは、あなたの努力に集中する場所を示します。 273の中でさえ、おそらく20-50は本当に多用され、残りはそれほど頻繁に使われることはないでしょう。がんばろう! –

5

PERL5OPT環境変数に-Mwarnings -Mstrictを追加すると、すべてのPerlスクリプトに対して警告と制約を設定できます。詳細は、perlrunを参照してください。

12

うーん...

あなた-wを保持するためにPERL5OPTのenvariableを設定することができます。詳細は、perlrun manpageを参照してください。セキュリティトラッキングのために、-T-tなどの汚れも考慮していただければ幸いです。

しかし、私はあなたを羨ましくない。 use warningsおよびuse strictの利益を得ずに開発された改造コードは、通常、ロイヤルPITAです。

私はstandard boiler-plateの新しいPerlプログラムを開始するのに使っています。しかし、私はCGIプログラムについて何も考えていないが、ボイラープレートに対するいくつかの調整の恩恵を受ける可能性が高い。

+0

+1ロイヤルPITA(これは礼儀正しくなっています)です。 –

+0

私は今、PERL5OPTのアプローチをテストしました。マニュアルを理解できませんでしたが、ターミナル "export PERL5OPT = w"でエクスポートコマンドを実行した後、ターミナルセッションで実行するすべてのスクリプトはその-wスイッチそれは動作しますが)、私はApacheからスクリプトを読み込んだときに、それは有効ではありません。これはapacheのためのdoindのやり方です。 –

関連する問題