Если бы вы начали со стандартного шаблона, то вы бы знали:
#!/usr/bin/env perl
#
# name_of_program - what the program does as brief one-liner
#
# Your Name <your_email@your_host.TLA>
# Date program written/released
#################################################################
use 5.10.0;
use utf8;
use strict;
use autodie;
use warnings FATAL => "all";
# ⚠ change to agree with your input: ↓
use open ":std" => IN => ":encoding(ISO-8859-1)",
OUT => ":utf8";
# ⚠ change for your output: ↑ — *maybe*, but leaving as UTF-8 is sometimes better
END {close STDOUT}
our $VERSION = 1.0;
$| = 1;
Ответ в том, что ваша программа синтаксически, но не семантически верна. Вы печатаете "something"
в неоткрытом * file5le-объекте Dumper
, потому что Dumper
находится в дополнительном слоте для вызова метода print
. Это делает Dumper
print
инвокантом. Но вы никогда не открывали дескриптор с таким именем, поэтому вы печатаете в неинициализированный файловый дескриптор.
Используй мой шаблон. ПОЖАЛУЙСТА!