2016-07-14 15 views
1

Ich erhalte die folgende Fehlermeldung, wenn ich meinen Perl-Skript ausführen:Warum bekomme ich den Fehler 'Ungültiger Bereich "B->" im Transliterationsoperator', obwohl `tr` nicht in meinem Code erscheint?

Unzulässiger Bereich "B->" in der Umschrift Operator bei ./foo.pl Linie 249

jedoch Linie 249 ist auskommentiert, und ich verwende den Transliterationsoperator tr nirgendwo in meinem Code.

Hier ist das relevante Stück meines Skripts. Zeile 249 ist # foreach (@projects), und wie Sie sehen können, wurde es auskommentiert.

# Find the project name, hardware, and version from the archive given 
$project = undef; 
$hardware = undef; 
$version = undef; 
if (defined $testfarmDB){ 
    my $idFile = `pwd`; 
    chomp $idFile; 
    $idFile .= "/$ENV{TESTDIR}/testrun.id"; 
    y @filecontent = `cat $idFile`; 
    $filecontent[0] =~ /(\d+)/; 
    my $testRunID = $1; 
    $hardware = $testfarmDB->getTestRunModelName($testRunID); 
    $project = $testfarmDB->getTestRunProjectName2($testRunID); 
    $version = $testfarmDB->getTestRunSWRevisionName($testRunID); 
}else{ 
    die "Cannot connect to Database. Program terminated. \n"; 
} 
print " Project = $project\n"; 
print " Model Type = $hardware\n"; 
print " Software Version = $version\n"; 

# Break up the path given to determine the project and version number 
# foreach (@projects) 
# { 
#  if ($archive =~ /($_)/i) 
#  { 
#   $project = $_; 

#   foreach my $hw (@hardwares) 
#   { 
#    if ($archive =~ /$hw/i) 
#    { 
#     $hardware = $hw; 
#     last; 
#    } 
#   } 
#   last; 
#  } 
# } 

$archive =~ /((?:\d+\.)+\w+)/; 
# $version = $1; 

Wie kann ich das beheben?

+1

Wir müssen mindestens die betreffende Zeile sehen. Bitte, oder besser noch die umliegenden Zeilen. Sie können Ihre Frage bearbeiten. – simbabque

+0

Sie haben wahrscheinlich ein einzelnes '/' oder ein 'tr', ohne etwas darüber in der Codezeile. Es ist wahrscheinlich nur ein Tippfehler. Aber wir müssen den Code sicher wissen. – simbabque

+0

@simbabque Bitte sehen Sie es sich an, ich habe es aktualisiert – Henry

Antwort

7

Diese:

y @filecontent = `cat $idFile`; 

y ist ein veraltetes Synonym für den tr Operator. Perl sucht nach zwei weiteren Zeichen @, um die [email protected]@[email protected]-Anweisung abzuschließen, und es findet das zweite in Ihrem Kommentarabschnitt.

+0

Es gibt keinen Weg in einer Million Mannstunden, die jemand gefunden haben könnte, ohne den Code zu sehen. – mob

+0

Aber es ist sehr einfach zu erkennen, wenn Sie den Code sehen. – simbabque

+0

Thx viel. Das war ein Tippfehler. Ich wollte es nie, noch habe ich es bemerkt. – Henry