【发布时间】:2013-08-29 04:16:34
【问题描述】:
我知道这里出了点大问题,但我是 Perl 的新手,希望做以下事情:
在 all.css 中找到所有包含未使用的 CSS 行的行并执行一些逻辑。我的代码的结构方式似乎无法匹配:
if ($lineA =~ /$lineU/) #如果all.css中的行包含unused.css中的行
因为变量是单独定义的。
我将如何构建程序以便能够将 all.css 中的行与未使用的.css 中的行进行匹配?
我的程序如下:
#!/usr/bin/perl
use strict;
use warnings;
open(my $unused_handle,'<', "unused.css") or die $!;
open(my $all_handle,'<',"all.css") or die $!;
open(my $out, '>' ,'lean.css') or die $!;
my $lineU = q{};
my $lineA = q{};
print $out "$lineU";
while($lineU =<$unused_handle>) {
print $out "$lineU";
#print $out "$lineA"; Line One not printed from All
while($lineA =<$all_handle>) {
if ($lineA =~ m/$lineU/sxm) {
print "Huza!\n";
}
else {
print "No Match\n";
}
}
}
close ($unused_handle);
close ($all_handle);
close ($out);
print "Done!\n";
exit;
下面是我的输入文件示例。
unused.css 中的示例行:
audio, canvas, video
audio:not([controls])
[hidden]
h6
all.css 中的示例行:
article, aside, details, figcaption, figure, footer, header, hgroup, nav, section, summary {
display: block;
}
audio, canvas, video {
display: inline-block;
*display: inline;
*zoom: 1;
}
audio:not([controls]) {
display: none;
height: 0;
}
[hidden] {
display: none;
}
【问题讨论】:
-
my $infile=<unused.css>; -
我正在尝试定义文件名。你有什么推荐的?
-
直接打开它:
open(my $unused_handle,'<', "unused.css") or die $!;- 之后您可以使用文件句柄,例如while (my $line=<$unused_handle>) -
my $infile="unused.css"; open(my $unused,'<', $infile) or die $!;但是,使用两个不同的名称很奇怪。我会选择my $unused_qfn="unused.css"; open(my $unused_fh,'<', $unused_qfn)。使用 var 作为文件名是很好的,因为您可以将其包含在错误消息中:die "Can't open $unused_qfn: $!\n"; -
(有没有其他问题没时间看)
标签: perl string-matching