얼마 전에 $SIG{WINCH}
에 문제가있었습니다. 두 모듈 모두로드했기 때문에 두 모듈 모두 $SIG{WINCH}
Problems with $SIG{WINCH} when using it in a module을 사용했기 때문입니다. 이제이 경우를 재구성하려고 시도했지만 이번에는 서브 루틴 내에 $SIG{WINCH}
을 하나의 모듈에 넣었습니다.
use warnings;
use strict;
package My_Package;
use Exporter 'import';
our @EXPORT = qw(choose);
sub choose {
# ...
my $size_changed;
local $SIG{WINCH} = sub { $size_changed = 1; }; # edit: added "local"
while (1) {
my $c = getch();
if ($size_changed) {
write_screen();
$size_changed = 0;
next;
}
# ...
}
}
이제는 제대로 작동하는 것 같습니다. $SIG{WINCH}
을이 방법으로 현지화했거나 재구성 할 때 뭔가 잊었습니까?
실제로 어떤 것을 현지화하고 있습니까? 당신은'local'이나'my' 또는'our'를 사용하지 않았습니다. 키워드는 일반적으로 그러한 키워드와 관련이 있습니다. Perl에서 변수는 다르게 선언하지 않는 한 전역 변수로 유지됩니다. 아마도'local $ SIG {WINCH} = sub {$ size_changed = 1; };하지만 틀릴 수도 있습니다. –
perlipc를 감추고있는 중에 나에게'local'을 광고해야한다는 것이 나에게 일어났습니다. –