今だから分かるlocal
最近になって$/
とか、$\
を知って、local
を使う機会に恵まれたので、
少しだけlocal
を理解できた気がします。
$/
とか、$\
については、こちらをどうぞ。
Perl で定義済みの変数(perldoc.jp)
例えば、print
を実行した時の挙動を変えてみます。
use v5.10; use strict; use warnings; sub foo { $\ = "\n"; print '$\ has changed!!'; } print 'a'; print 'b'; print 'c'; print "\n", '----------------', "\n"; foo(); print 'a'; print 'b'; print 'c';
実行すると???
$ perl aaa.pl
abc
----------------
$\ has changed!!
a
b
c
でも、6行目にlocal
を付けると・・・。
$ perl bbb.pl
abc
----------------
$\ has changed!!
abc
こんな感じで、挙動を変更する範囲をコントロールできます。
これ、use
してるモジュールにも影響でるのかな???
package Foo { use strict; use warnings; sub foo { print 'This package is ', __PACKAGE__; } } use strict; use warnings; print 'Here is ', __PACKAGE__; Foo::foo(); print "\n", '------------------', "\n"; $\ = "\n"; print 'Here is ', __PACKAGE__; Foo::foo();
これを実行すると?
$ perl ccc.pl
Here is mainThis package is Foo
------------------
Here is main
This package is Foo
やっぱ、よろしくないですね。
おしまい。
Leave a Comment