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 и узнал, как это кодировать!

Другие вопросы по тегам