2013-05-11 29 views
2

我需要從$!中的sub中返回錯誤文本。但簡單

$! = "Error: Something is wrong!"; 

不起作用,它不會改變$ !.我該怎麼做?

+0

'$!'包含出錯的地方... – squiguy 2013-05-11 03:47:10

+0

好吧 $!=「這是錯的」; – michaeluskov 2013-05-11 03:48:17

+5

你應該考慮「$!」爲只讀。這是相當於道德的道德:http://linux.die.net/man/3/perror – paulsm4 2013-05-11 03:50:28

回答

3

兩個選項。

首先,Errno::AnyString

二,不要這樣做。 $!是特殊的,並且應該表示errno。如果您需要傳達特殊錯誤,請使用$YourModule::Error(或其他)。

5

$!反映了C庫var errno(一個數字)及其表示的錯誤消息(如使用strerror或類似方法獲得的)。

您不能更改字符串,因爲這是生成的值,但可以更改數字。

$ perl -E'say $!=$_ for 1..10' 
Operation not permitted 
No such file or directory 
No such process 
Interrupted system call 
Input/output error 
No such device or address 
Argument list too long 
Exec format error 
Bad file descriptor 
No child processes 

你的代碼是不是要設置errno,所以應該利用自身的變量,而不是與$!搞亂(或拋出使用die的除外)。