#!/usr/bin/perl use strict; use warnings; use Perl6::Say; my $stop = 0; $SIG{'INT'} = sub { $stop = 1; say 'sigint received'; }; while (1) { say 'loop start'; sleep 3; exit if $stop; say 'loop end'; }こんなんでできるかと思ったけど、ダメだった。 C-c 押した瞬間にプロセスが終了してしまう。 sleep 3; してる最中に INT シグナルを受け取ったら、 $stop に 1 を代入して INT シグナルそのものは無視してプログラムの実行を続けて欲しい。 3 秒待ったあとで、 $stop が真ならば終了する。 sleep 3; の部分で実際には時間のかかる処理をさせていて、中断したいんだけど今