— Дорогая, я дома!
— Почему так поздно?
— По дороге медведь ногу вывихнул — пришлось водкой отпаивать.
— Садитесь все! Давайте выпьем водки.
— Мам, я пойду поиграю с медведем.
— Хорошо, только стачала выпей водки.
— А где наш дедушка?
— Он вторую неделю стоит в очереди за талонами на талоны.
— Хорошо, что он перед этим выпил водки. И ты без дела не сиди — иди тоже выпей водки.
— Ладно, иди, погуляй, сынок, и не забудь написать вечером отчёт в КГБ! А по пути домой не забудь купить водки — она заканчивается.
— Дорогая, что-то жарко. Выключи, пожалуйста, атомный реактор.
— Сейчас водку допью и выключу, а ты пока сыграй на балалайке.
Вроде бы самое оно функция settimer и последующая обработка сигнала (экзампл с man-странички Time::HiRes):
use Time::HiRes qw ( setitimer ITIMER_VIRTUAL time );
$SIG{VTALRM} = sub { print time, "\n" };
setitimer(ITIMER_VIRTUAL, 10, 2.5);
но получается ошибка:
Your vendor has not defined Time::HiRes macro ITIMER_VIRTUAL, used at line 3.
# вначале $ref не определена
print $ref; # выводит, что $ref не определена
# теперь работаем, как будто в $ref содержится ссылка на массив
@$ref = (1,2,3);
# выводим $ref снова
print $r; # получаем ARRAY(0x1abf008), то есть ссылка создалась сама собой!
array1 = ["а", "б"]
array2 = ["в", "г"]
hash = {array1=>100, array2=>300}
hash[array1] #=> 100
array1[0] = "я"
hash[array1] #=> nil
hash.rehash #=> {["я", "б"]=>100, ["в", "г"]=>300}
hash[array1] #=> 100