开发者

Perl syntax error

See also SO 1664677


I get this error

2: Syntax error: "(" unexpected

when I run this script -- all help is very appreciated

#!/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) &a开发者_Python百科mp; 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;


Looks like you weren't using use strict; use warnings; -- you should always have this at the top of every Perl file.


It may be a problem with the way you run the script.

As posted there's no obvious problem, however I get your error when I run the script like this

$ ksh so.pl
so.pl: syntax error at line 2: `(' unexpected

Whereas ./so.pl or perl ./so.pl give:

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


I just ran it and didn't receive a syntax error?


'perl -wc xxx' (where xxx is the copied script) gives:

\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.

The code compiles and runs for me. I wonder if that very long line causes trouble? It is 2073 characters, and some systems might run foul of POSIX2_LINE_MAX being 2048.

(On MacOS X 10.5.8, I tried 'cat > xxx' followed by a paste of the script (command-v) and 'cat' jammed on the long line - I interrupted it. I ended up using 'vim xxx' and that worked fine.)

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜