IMNHO, реальный ответ - использовать File :: Spec и писать вещи немного яснее:
use File::Spec::Functions qw( catfile );
# ...
my $root = "/media/New Volume/Programming/kai product";
my $imagedirectory = catfile($root,
'photography',
$filecategory,
'images',
);
my $galleryfile = catfile($root,
'pages',
"${filenumber}_${filecategory}_gallery.html",
);
Кроме того, полезно соблюдать хорошие привычки, особенно если учить Perl:
Всегда ставить:
use strict;
use warnings;
как первая вещь в вашей программе.
Использовать лексические файловые дескрипторы вместо файловых дескрипторов голых слов (которые являются глобальными пакетами):
open my $gallery, '+>', $galleryfile
or die "Cannot open '$galleryfile': $!;
и включите имя файла в сообщение об ошибке.
Наконец, мне нравится File :: Slurp 's append_file
:
append_file $gallery_file, [
map { "$_\n" } ( $filecount, $imagedirectory, $galleryfile )
];
Вот пересмотренная версия вашей программы:
#!/etc/perl
use strict;
use warnings;
use File::Spec::Functions qw( catfile );
my $root = "/media/New Volume/Programming/kai product";
my $filecategory = "cooking";
my $imagedirectory = catfile($root,
'photography',
$filecategory,
'images',
);
my @imagelocation = read_dir $imagedirectory;
for my $filenumber ( 0 .. 2 ) {
my $galleryfile = catfile($root, 'pages',
"${filenumber}_${filecategory}_gallery.html",
);
append_file $gallery_file, [
map { "$_\n" } (
scalar @imagelocation, $imagedirectory, $galleryfile,
)];
}