2016-05-19 9 views
3

Windows 7にStrawberry Perl 5.22をインストールしました。その後、Padre/Dwimperl(Strawberry 5.14を含む)をインストールしました。私は5.22をアンインストールしました。それから、 "D:\ Dwimperl \ perl \ bin"の "cpan SDL"を使ってSDLをインストールしました。正しくインストールされているようです。utf8を使用している場合、Perlの警告、strict&diagnosticエラーは出力されません。

Padre(および/またはコマンドライン)を使用すると、Perlスクリプトを実行できます。しかし、私がエラー( "$ r = 0;")を導入すると、 "use utf8;"をコメントアウトしない限り、warnings/strict/diagnosticsからの通常の出力は表示されません。

「use utf8;」を使用すると、

#! D:\Dwimperl\perl\bin\perl.exe 
use warnings; 
use strict; 
use diagnostics; 
use utf8; 
binmode STDOUT, ':utf8'; 
$r = 0; 
print "Hello World!\n"; 
exit 0; 

は誰がどのように助言することができます:

Global symbol "$r" requires explicit package name at sdl2.pl line 12. 
Execution of sdl2.pl aborted due to compilation errors (#1) 
    (F) You've said "use strict" or "use strict vars", which indicates 
    that all variables must either be lexically scoped (using "my" or "state"), 

    declared beforehand using "our", or explicitly qualified to say 
    which package the global variable is in (using "::"). 

Uncaught exception from user code: 
     Global symbol "$r" requires explicit package name at sdl2.pl line 12. 
Execution of sdl2.pl aborted due to compilation errors. 
at sdl2.pl line 15 

これは私が使用しているスクリプトは次のとおりです。私はこのより有用なエラーを取得し、それがなければ

BEGIN not safe after errors--compilation aborted at D:/Dwimperl/perl/lib/diagnos 
tics.pm line 599. 

:私は、この非有用なエラーを取得します私は有用なエラーを保つことができ、utf8も使用できますか?

+3

いいえ、@ラジャ!彼は__intentionally__エラーを生成するためにそれを省略しました。 OPの問題は、彼がutf8を使用するときにエラーが正しく報告されないということです。 – PerlDuck

+1

私は 'use diagnostics'を避ける傾向があります。実際に行うことは、 'use warnings'の出力を取って[perldiag](http://perldoc.perl.org/perldiag.html)でそれを探して代わりに表示することです。ほとんどのエディタ&IDEは実際にあなたの問題を強調する 'warnings'モジュールの出力を探していませんでした。 – tjd

+0

@BlueGF、ここで役に立つ回答が見つかった場合は、同様の質問をした他のユーザーに利益をもたらすように、upvoteおよび/またはacceptとしてマークしてください。 –

答えて

関連する問題