2014-11-04 51 views
0

我使用命令行將字符串傳遞給Perl程序。例如,這傳遞"stackOveflow"到程序helloPerl`chop`刪除兩個字符而不是一個

hello "stackOveflow" 

我用chop從的@ARGV

chop($ARGV[$#ARGV]); 

,然後最後一個元素刪除最後一個字符打印

say "$ARGV[$#ARGV]"; 

我我期待"stackOveflow在輸出,但我看到stackOveflo

有人能告訴我爲什麼嗎?

+0

'的perldoc -f pop' – toolic 2014-11-04 18:52:12

+0

'的perl -E '說,印章,說對流行' 「stackOveflow」' – 2014-11-04 19:00:58

回答

1

hello "stackOveflow"告訴shell執行程序hello和字符串stackOveflow傳遞給它作爲參數(類似於my $s = "stackOveflow";如何stackOveflow分配字符串$x在Perl)。

chop刪除字符串的最後一個字符,所以值從stackOveflow更改爲stackOveflo

$ perl -E'say $ARGV[-1]; chop($ARGV[-1]); say $ARGV[-1]' "stackOveflow" 
stackOveflow 
stackOveflo 
+0

他爲什麼越來越則在參數值開雙引號? – 2014-11-04 18:50:22

+0

''「'不是作爲字符? – 2014-11-04 18:50:28

+0

@Jonathan M,他不是。 – ikegami 2014-11-04 18:51:22

相關問題