我有这个文件mk-colors.perl
,它创建了一个rgb颜色的无序图。
在我的makefile中,我尝试这样做:
all : ${EXECBIN}
- checksource ${ALLSOURCES}
${EXECBIN} : ${OBJECTS}
${COMPILECPP} -o $@ ${OBJECTS} ${LINKLIBS}
%.o : %.cpp
${COMPILECPP} -c $<
colors.cppgen: mk-colors.perl
mk-colors.perl >colors.cppgen
然而,似乎perl脚本没有正确编译,这段代码在我的工作服务器上工作正常,但是当我复制到我的localmachine时,perl不会编译成cppgen文件。我正在运行XUbuntu 12.04,我需要安装任何新东西吗?感谢
编辑: 我一直收到这个错误:
./mk-colors.perl: invalid line: ! $Xorg: rgb.txt,v 1.3 2000/08/17 19:54:00 cpqbld Exp $`
这是perl代码:
#!/usr/bin/perl
# $Id: mk-colors.perl,v 1.3 2014-05-21 15:40:52-07 - - $
use strict;
use warnings;
my %colors;
my $file = "/usr/share/X11/rgb.txt";
open RGB_TXT, "<$file" or die "$0: $file: $!";
while (my $line = <RGB_TXT>) {
$line =~ m/^\s*(\d+)\s+(\d+)\s+(\d+)\s+(.*)/
or die "$0: invalid line: $line";
my ($red, $green, $blue, $name) = ($1, $2, $3, $4);
$name =~ s/\s+/-/g;
$colors{$name} = [$red, $green, $blue];
}
close RGB_TXT;
print "// Data taken from source file $file\n";
print "const unordered_map<string,rgbcolor> color_names = {\n";
printf " {%-24s, rgbcolor (%3d, %3d, %3d)},\n",
"\"$_\"", @{$colors{$_}}
for sort {lc $a cmp lc $b} keys %colors;
print "};\n";
答案 0 :(得分:1)
您的die
语句正在执行:
$line =~ m/^\s*(\d+)\s+(\d+)\s+(\d+)\s+(.*)/
or die "$0: invalid line: $line";
这表示/usr/share/X11/rgb.txt
中的某些数据不符合您的预期格式。打开这个文件,找到有问题的行,并弄清楚如何修补你的Perl脚本以便正确处理它。