qqとかでエラーになるケース
そういえば、宣言してない変数とか、
"
(ダブルクォーテーション)で括ったり、
qq
を使って出力するとどうなるのか気になったので試してみた。
use strict; use warnings; use v5.10; say '$hello!'; # say "$hello!"; say "\$hello!"; say '---'; say q/$hello!/; # say qq/$hello!/; say qq/\$hello!/; say '---'; my $hello = 'good bye'; say "$hello!"; say qq/$hello!/;
実行結果はこんな感じ。
$ perl aaa.pl
$hello!
$hello!
---
$hello!
$hello!
---
good bye!
good bye!
ちなみに、6行目と12行目の#
を外すと、こんなエラーが出る。
Global symbol "$hello" requires explicit package name at aaa.pl line 6.
Global symbol "$hello" requires explicit package name at aaa.pl line 12.
Execution of aaa.pl aborted due to compilation errors.
でも、6行目と12行目の#
を外した状態で、
1行目と2行目の先頭に#
を付ける(コメントアウトする)と、
何事もなかったように動作する。
あと、1行目のuse strict;
だけコメントアウトすると、こんな感じ。
$ perl aaa.pl
$hello!
Use of uninitialized value $hello in concatenation (.) or string at aaa.pl line 6.
!
$hello!
---
$hello!
Use of uninitialized value $hello in concatenation (.) or string at aaa.pl line 12.
!
$hello!
---
good bye!
good bye!
まとめ
use strict;
とuse warnings;
は大事。
おしまい。
Leave a Comment