Perl - чтение всех файлов в каталоге с расширением ".css"
Я планирую преобразовать Perl-файл в исполняемый файл, чтобы при запуске исполняемого файла он обнаруживал все *.css
файлы в текущем каталоге и выбрасывает вывод.
Есть ли способ сделать это? Я написал программу ниже, и она выдает сообщение об ошибке. Можете ли вы помочь мне настроить это?
Пожалуйста, потерпите меня, так как я пытаюсь выучить Perl. Каталог для чтения bin
,
#!/usr/bin/perl
my @files;
opendir(bin, $Directoryname) or die "cannot open directory $Directoryname";
@files = grep(/\.css$/, readdir(bin));
# my $regex = qr/
# (?=.*font-size) &&
# (?!.*%)
# /ix;
foreach $file (@files) {
open my $handle, '<', $file or die "could not open '$file': $!";
while (my $line = <$handle>) {
if ($line =~ /font-size/) {
if ($line !~ /%/) {
print "\n Forced Font is detected. -- $line\n";
}
else {
print "\n Font is specified in % -- $line \n";
}
}
if ($line =~ /line-height/) {
print "\n Forced Line-height is detected. \n";
}
if ($line =~ /position:absolute/) {
print "\n position:absolute is detected. \n";
}
}
}
close(txt);
Это дает вывод:
cannot open directory at C:\Perl64\bin\sample1.pl line 4.
4 ответа
Переменная $Directoryname
не имеет значения, связанного с этим.
Вы должны установить что-то вроде
$Directoryname = 'bin';
Тем не менее, чтобы найти все CSS- файлы, я бы использовал glob
:
my @files = glob('*.css');
Проверьте документы для opendir/readir
и как их следует использовать,
use strict;
use warnings;
my $Directoryname = "bin";
opendir(my $dir, $Directoryname) or die "$! $Directoryname";
my @files = grep(/\.css$/, readdir($dir));
# ..
Похоже $Directoryname
пусто или неопределенно, где вы присваиваете ему значение?
добавлять use strict;
в начале вашего сценария, чтобы увидеть, где у вас есть другие проблемы.
Спасибо, парни! Я исправил проблему... Прошел через readir/opendir и узнал, как это кодировать!