Ich habe eine Perl-Anwendung, die eine Eingabe wie von der Kommandozeile nimmt:Wie kann ich eine Zeichenfolge wie "1..15,16" in eine Liste von Zahlen erweitern?
application --fields 1-6,8
Ich bin verpflichtet, um die Felder anzuzeigen, wie durch den Benutzer auf der Kommandozeile angefordert.
Ich dachte über den Ersatz von '-' mit '..', so dass ich sie in Array z.
$str = "1..15,16" ;
@arr2 = ($str) ;
@arr = (1..15,16) ;
print "@arr\n" ;
print "@arr2\n" ;
Das Problem hier ist, dass @arr gut funktioniert (wie es sein sollte), aber in @ arr2 die gesamte Zeichenfolge als Array-Elemente nicht erweitert wird.
Ich habe versucht, Escape-Sequenzen, aber kein Glück.
Kann es so gemacht werden?
+1. "Es richtig zu machen" ist immer besser als eval. Viele weniger Nebenwirkungen. – jrockway
Ich habe Number :: Range noch nie zuvor gesehen. Ich habe das für zukünftige Verwendung abgelegt. Danke, dass du mich darauf aufmerksam gemacht hast! –
Wenn Sie Benutzereingaben nehmen, wird Ihre App auf 1..1000000000 explodieren, es sei denn, Sie haben etwa 8 GB RAM. Number :: Range-> size() ist momentan nutzlos, um dies zu verhindern, da es den gesamten Bereich generiert, um die Größe herauszufinden. –