2016-07-14 29 views
0

Ich weiß nicht, Perl, aber jetzt muss ich Perl-Skript korrigieren, so hoffe ich, dass Sie mir helfen können. Ich habe ein Perl-Skript, das Dateien mit der nächsten Struktur des Namens verarbeiten kann: CCCCNNNN.16X, CCCC - 4 Zeichen, NNNN - 4 Zahlen und X könnte "o" oder "n" sein, zum Beispiel, bshm1930.16o . Dieses Skript erstellt einen Befehl für die Linux-Befehlszeile, es werden jedoch keine korrekten Dateien ausgewählt. Wie ich es verstehe, ist das Problem in diesem Teil des Codes:Brauchen Sie Hilfe in Perl

# add ephemeris file 
$ephfile = $rawfile; 
$ephfile =~ s/$stationID/bshm/; 
$ephfile =~ s/\.([90][0-9])o/.$1n/; 
push @opt, "--nav $ephfile"; 

Hier muss ich Datei vom Typ * .16n wählen, aber Code zurückgibt * .16o. Was sollte ich ändern, um Datei mit 16n Erweiterung, nicht 16o zu erhalten? Vielen Dank im Voraus!

simbabque, danke

Antwort

1

Das Muster für reguläre Ausdrücke in Ihrer Substitution nicht 16 überein.

s/\.([90][0-9])o/.$1n/; 

Dies wird passen ein neun oder ein Null durch eine beliebige Zahl, gefolgt von einem o gefolgt, und dann mit einem Punkt zu ersetzen, die zwei Ziffern und einem n.

Siehe Erläuterung unter https://regex101.com/r/kA0zR5/2.