2011-03-02 16 views
5

Negatif değerleri komut satırı anahtarları olarak işlemekten kaçınmak için Perl almanın bir yolu var mı? Ne stringifying ne de argüman backslashing Linux altında yardım edecek gibi gözüküyorNegatif sayıları komut satırı argümanları olarak kabul etmek için Perl'i nasıl alabilirim?

$ perl -e 'print "@ARGV\n";' 4 5 
    4 5 

$ perl -e 'print "@ARGV\n";' -4 5 
    Unrecognized switch: -4 (-h will show valid options). 

$ perl -e 'print "@ARGV\n";' "-4" 5 
    Unrecognized switch: -4 (-h will show valid options). 

$ perl -e 'print "@ARGV\n";' '-4' 5 
    Unrecognized switch: -4 (-h will show valid options). 

$ perl -e 'print "@ARGV\n";' \-4 5 
    Unrecognized switch: -4 (-h will show valid options). 

cevap

13
$ perl -E "say join ', ', @ARGV" -- -1 2 3 
-1, 2, 3 

hile seçeneği ayrıştırmayı sona erdirmek için çift tire (--) kullanıyor. Double-hyphen is a GNU convention:

$ touch -a 
usage: touch [-acfm] [-r file] [-t [[CC]YY]MMDDhhmm[.SS]] file ... 
$ touch -- -a 
$ ls 
-a 
+0

Ha, bağlantı için teşekkürler, daxim. Çift çizginin GNU ile bir ilgisi olduğunu düşündüm, ancak Google'a başarısız oldu. – zoul

+0

'-' bir [POSIX] 'dir (http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html) standardıdır; URL'nin §12.2'sinde Kılavuz 10'a bakın. –

İlgili konular