tags:

views:

289

answers:

6

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) & 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;
+2  A: 

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

Adam Taylor
Maybe they're using an unexpectedly old Perl. What does 'perl -v' say?
Harold L
+8  A: 

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

Ether
+2  A: 

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
martin clayton
:) http://perldoc.perl.org/perldiag.html#syntax-error-at-line-%d:-%60%s%27-unexpected
ysth
@ysth - indeed - the error in the OP post is not from perl.
martin clayton
A: 

'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.)

Jonathan Leffler
A: 

What version of perl are you running? What operating system? Sun boxes tend to run old versions. (As of January 2009, I was responsible for perl applications that used version 5.0004!!!)

David Harris
A: 

alright, so i got it to run...but its not doing it right.

How do I make it change the key based on the email and Key Id values?

JonYork
What was wrong that you fixes.As far as the second question goes, the easiest way to get help is to ask the person who gave you the script how to run it. Otherwise cut the invocation and resulting output from your command window and paste them into a new question. Do not omit anything or edit the text.
David Harris