我计划将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.
答案 0 :(得分:3)
变量$Directoryname
没有与之关联的值。
你应该用
之类的东西来设置它$Directoryname = 'bin';
那就是说,为了找到所有 css 文件,我会使用glob
:
my @files = glob('*.css');
答案 1 :(得分:2)
看起来$Directoryname
是空白还是未定义在哪里为其分配值?
在脚本的开头添加use strict;
,以查看您遇到其他问题的位置。
答案 2 :(得分:2)
检查opendir/readir
的文档以及如何使用它们
use strict;
use warnings;
my $Directoryname = "bin";
opendir(my $dir, $Directoryname) or die "$! $Directoryname";
my @files = grep(/\.css$/, readdir($dir));
# ..
答案 3 :(得分:0)
谢谢你们!我解决了这个问题...通过readir / opendir并学会了如何编写代码!