Perl语法错误

Perl语法错误,perl,syntax,Perl,Syntax,另见 我得到这个错误 2:语法错误:“(”意外 当我运行这个脚本时,非常感谢所有的帮助 #!/usr/bin/perl use Digest::MD5 qw(md5_hex); printf "Usage : keygen.pl e-mail key-id\ne-mail : the one you provided\nkey-id : provided by hcf/hsfconfig\n"; $pad = pack("H2048", "00000000963007772c610eeeb

另见


我得到这个错误

2:语法错误:“(”意外

当我运行这个脚本时,非常感谢所有的帮助

#!/usr/bin/perl
use Digest::MD5  qw(md5_hex);
printf "Usage : keygen.pl e-mail key-id\ne-mail : the one you provided\nkey-id : provided by hcf/hsfconfig\n";

$pad = pack("H2048", "00000000963007772c610eeeba51099919c46d078ff46a7035a563e9a395649e3288db0ea4b8dc791ee9d5e088d9d2972b4cb609bd7cb17e072db8e7911dbf906410b71df220b06a4871b9f3de41be847dd4da1aebe4dd6d51b5d4f4c785d38356986c13c0a86b647af962fdecc9658a4f5c0114d96c0663633d0ffaf50d088dc8206e3b5e10694ce44160d5727167a2d1e4033c47d4044bfd850dd26bb50aa5faa8b5356c98b242d6c9bbdb40f9bcace36cd832755cdf45cf0dd6dc593dd1abac30d9263a00de518051d7c81661d0bfb5f4b42123c4b3569995bacf0fa5bdb89eb802280888055fb2d90cc624e90bb1877c6f2f114c6858ab1d61c13d2d66b69041dc760671db01bc20d2982a10d5ef8985b1711fb5b606a5e4bf9f33d4b8e8a2c9077834f9000f8ea8099618980ee1bb0d6a7f2d3d6d08976c6491015c63e6f4516b6b62616c1cd83065854e0062f2ed95066c7ba5011bc1f4088257c40ff5c6d9b06550e9b712eab8be8b7c88b9fcdf1ddd62492dda15f37cd38c654cd4fb5861b24dce51b53a7400bca3e230bbd441a5df4ad795d83d6dc4d1a4fbf4d6d36ae96943fcd96e34468867add0b860da732d0444e51d03335f4c0aaac97c0ddd3c710550aa41022710100bbe86200cc925b56857b3856f2009d466b99fe461ce0ef9de5e98c9d9292298d0b0b4a8d7c7173db359810db42e3b5cbdb7ad6cbac02083b8edb6b3bf9a0ce2b6039ad2b1743947d5eaaf77d29d1526db048316dc73120b63e3843b64943e6a6d0da85a6a7a0bcf0ee49dff099327ae000ab19e077d44930ff0d2a3088768f2011efec206695d5762f7cb67658071366c19e7066b6e761bd4fee02bd3895a7ada10cc4add676fdfb9f9f9efbe8e43beb717d58eb060e8a3d6d67e93d1a1c4c2d83852f2df4ff167bbd16757bca6dd06b53f4b36b248da2b0dd84c1b0aaff64a0336607a0441c3ef60df55df67a8ef8e6e3179be69468cb361cb1a8366bca0d26f2536e2685295770ccc03470bbbb91602222f260555be3bbac5280bbdb2925ab42b046ab35ca7ffd7c231cfd0b58b9ed92c1daede5bb0c2649b26f263ec9ca36a750a936d02a906099c3f360eeb8567077213570005824abf95147ab8e2ae2bb17b381bb60c9b8ed2920dbed5e5b7efdc7c21dfdb0bd4d2d38642e2d4f1f8b3dd686e83da1fcd16be815b26b9f6e177b06f7747b718e65a0888706a0fffca3b06665c0b0111ff9e658f69ae62f8d3ff6b6145cf6c1678e20aa0eed20dd75483044ec2b30339612667a7f71660d04d476949db776e3e4a6ad1aedc5ad6d9660bdf40f03bd83753aebca9c59ebbde7fcfb247e9ffb5301cf2bdbd8ac2baca3093b353a6a3b4240536d0ba9306d7cd2957de54bf67d9232e7a66b3b84a61c4021b685d942b6f2a37be0bb4a18e0cc31bdf055a8def022d");

@pad = unpack("L256",$pad);

@owner = unpack("C*",$ARGV[0]);
@regid = reverse unpack("C*", pack("H*", substr($ARGV[1],5,4).substr($ARGV[1],10,4)));

@tab = (@regid, @owner);
$g = $pad[71];

foreach $c(@tab)
{
    $i = ($c^$g) & 0xff;
    $g = ($g>>8) ^ $pad[$i];
}

$key = $g << 16;
$g = ($g>>8) ^ ($pad[$g & 0xff]);
$g = ($g>>8) ^ ($pad[$g & 0xff]);
$key = $key | ( (($g>>16)^$g) & 0xffff);

$keystr =  uc(unpack("H*", pack("N",$key)));
$digest = md5_hex("$keystr\n");

$keystr = $keystr.uc(substr($digest,0,4));
$keystr =~ s/^(..)(..)(..)(..)(..)(..)$/\1-\2-\3-\4-\5-\6/;
printf "key:  %s\n", $keystr;
!/usr/bin/perl
使用摘要::MD5 qw(MD5_十六进制);
printf“用法:keygen.pl电子邮件密钥id\n邮件:您提供的\n密钥id:由hcf/hsfconfig提供\n”;
$pad=包装(“H2048”,"00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 6 6 6 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 BCACE36CD832755CDF45CF0DD6DC593DD1ABAC30D9263A00DE518051D7C81661D0BFB5F4B4223C4B356995BACF0FA5DB89EB80228088805FB2D90CC624E90BB1877C6F2F114C6858AB1D61C13D66B69041D760671B01BC20D2982A10D5EF8985B1711BFB606A5BF9F34B8E8E8E8A290774F9000EA8099618B6B6B6B6B6B6B6B6B6B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B4)CD386 6 CDCD4 CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD4 FB6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 CDCDCDCDCD38 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDB607月6日,6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 8E6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8足球俱乐部A3B06665C0B0111FF9E658F69AE62F8D3FF6B6145CF6C1678E20AA0ED20DD75483044EC2B30339612667A7F71660D04D4769DB776E3E4A6AD1AEDC5AD6D9660BDF40F03BD83753EBCA9C59EBBDE7FCFB247E9FFB530CF2BD8ACA393B3A3A3B240536D0BA9306D7CD2957DE54BF67D9232E7B6B6B6B6B6B841C40B4B4B6CF027B6B6B4B6CF028B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6;
@pad=拆包(“L256”,美元pad);
@所有者=拆包(“C*”,$ARGV[0]);
@regid=反向解包(“C*”,包装(“H*”,substr($ARGV[1],5,4)。substr($ARGV[1],10,4));
@tab=(@regid,@owner);
$g=$pad[71];
每个$c(@tab)
{
$i=($c^$g)和0xff;
$g=($g>>8)^$pad[$i];
}
$key=$g>8)^($pad[$g&0xff]);
$g=($g>>8)^($pad[$g&0xff]);
$key=$key |(($g>>16)^$g)和0xffff);
$keystr=uc(开箱(“H*”,包装(“N”,$key));
$digest=md5_十六进制($keystr\n”);
$keystr=$keystr.uc(substr($digest,0,4));
$keystr=~s/^(…)(…)(…)(…)(…)(…)$/\1-\2-\3-\4-\5-\6/;
printf“密钥:%s\n”,$keystr;

我刚刚运行了它,但没有收到语法错误?

看起来您没有使用
使用严格;使用警告;
--您应该始终将它放在每个Perl文件的顶部。

运行脚本的方式可能有问题

正如所发布的,没有明显的问题,但是当我像这样运行脚本时,我得到了您的错误

$ ksh so.pl
so.pl: syntax error at line 2: `(' unexpected
鉴于
/so.pl
perl./so.pl
给出:

Usage : keygen.pl e-mail key-id 
e-mail : the one you provided
key-id : provided by hcf/hsfconfig
key:  D4-33-EE-90-41-55
“perl-wc xxx”(其中xxx是复制的脚本)给出:

代码为我编译并运行。我想知道这很长的一行是否会引起麻烦?它是2073个字符,一些系统可能会运行与POSIX2_line_MAX为2048的冲突


(在MacOS X 10.5.8上,我尝试了“cat>xxx”,然后粘贴了脚本(command-v)并且“cat”卡在了长线上-我打断了它。我最终使用了“vim xxx”,效果很好。)

为什么会有linux标记(以及问题中的linux关键字)?语法错误在哪一行?@schmrz,我更新了标记和问题标题。在perl 5.8.8和5.10.0上运行它没有问题。您运行正确吗?“/usr/bin/perl”真的有perl吗?也许他们使用了一个出乎意料的旧perl。“perl-v”怎么说
\1 better written as $1 at xxx line 30.
\2 better written as $2 at xxx line 30.
\3 better written as $3 at xxx line 30.
\4 better written as $4 at xxx line 30.
\5 better written as $5 at xxx line 30.
\6 better written as $6 at xxx line 30.