Ссылки на код нельзя просто сериализовать. Файловые дескрипторы, соединения с базой данных и все, что имеет внешние ресурсы, нельзя просто сериализовать.
При сериализации таких предметов вы должны описать их так, чтобы их можно было воссоздать. Например, вы можете сериализовать дескриптор файла как путь, а смещение или ссылку на код - как имя функции, на которую ссылалась ссылка.
Вы можете найти имя подпрограммы, на которую ссылается код, с помощью Sub::Identify
:
#!/usr/bin/perl
use strict;
use warnings;
use Sub::Identify qw/sub_fullname/;
sub foo {}
my $r = \&foo;
print sub_fullname($r), "\n";
Конечно, это означает, что вы не можете сериализовать анонимные ссылки, и сериализованные данные могут надежно использоваться только программами, которые реализуют названные функции таким же образом.
Если вам понадобится это сделать, вам, вероятно, лучше использовать класс вместо простой ссылки на код.