2009-11-02 7 views
-5

Voir aussi SO 1664677Perl erreur de syntaxe


je reçois cette erreur

2: Erreur de syntaxe: "(" inattendu

quand je lance ce script - toute l'aide est très appréciée

#!/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; 
+0

Pourquoi y a-t-il une balise linux (et un mot-clé linux dans la question)? – schmrz

+1

Sur quelle ligne est l'erreur de syntaxe? –

+0

@schmrz, j'ai mis à jour les balises et le titre de la question – friedo

Répondre

5

Cela peut être un problème avec la façon dont vous exécutez le script.

Comme posté il n'y a pas de problème évident, mais je reçois votre erreur quand je lance le script comme celui-ci

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

Alors que ./so.pl ou perl ./so.pl donner:

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 
+1

:) http://perldoc.perl.org/perldiag.html#syntax-error-at-line-%d:-%60%s%27-unexpected – ysth

+0

@ysth - en effet - l'erreur dans le poste OP est pas de perl. –

2

Je l'ai juste couru et n'a pas reçu une erreur de syntaxe?

+0

Peut-être qu'ils utilisent un Perl inopinément vieux. Que dit 'perl -v'? –

9

On dirait que vous n'utilisez pas use strict; use warnings; - vous devriez toujours avoir ceci au début de chaque fichier Perl.

0

'perl -wc xxx' (où xxx est le script copié) donne:

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

La morue e compile et court pour moi. Je me demande si cette très longue ligne cause des problèmes? Il est 2073 caractères, et certains systèmes pourraient fonctionner faute de POSIX2_LINE_MAX être 2048.

(Sur Mac OS X 10.5.8, j'ai essayé « chat> xxx » suivi d'une pâte du script (commande v) et 'chat' bloqué sur la longue ligne - je l'ai interrompu, j'ai fini par utiliser 'vim xxx' et cela a bien fonctionné.)