Perl undef型別和defined 函式

2021-09-08 22:59:22 字數 705 閱讀 4437

undef表示的像是資料庫中的"null"。它表示空,啥也沒有,是完全未定義的。這不等於字串的空,不等於數值0,它是另一種型別。

在某些時候,perl程式本該報錯的時候(如使用未賦值的變數,引數越界,讀取檔案時到了檔案結尾eof),perl實際上不會報錯,而是返回undef。但如果開啟了warnings功能,則這種型別的問題,某些情況下會給出warning資訊,而不是返回undef。

一般情況下,將其當作空或0就好了,因為在需要數值的時候,undef代表的就是0,需要字串的時候,undef就是空字串。

所以,perl中的完全可以直接使用未定義的變數,因為未定義的變數起始就是undef。它可以被當作0,也可被當作空字串。

例如,下面兩個語句中,$sum和$str都是未定義的,初始時它們分別表示數值0和空字串''。

$sum += $i;

$str .= "abc";

可以直接將undef關鍵字賦值給某個變數,表示這個變數是undef的,這可以取消乙個變數的定義。相當於bash shell中的unset。

$line=undef;
如果想要判斷這個undef確實是undef而不是字串的空,可以使用defined()函式。如果是undef,則該函式返回false,否則返回true。

if(defined($ma))else

dll匯出def和lib檔案

在windows下程式設計的同學,可能都知道可以使用depends這個工具檢視dll依賴項和匯出符號,卻很少知道在命令列下,有兩個更好用的命令,分別是dumpbin和lib,這是vs安裝目錄下的兩個程式。用法 dumpbin 選項 檔案 選項 all archivemembers clrheader...

Python 實驗課 jieba和def

import jieba import jieba.posseg as psg f open 李白的詩.txt r encoding utf 8 lbpoetry f.read f.close lst poetry word psg.lcut lbpoetry dic one noun dic tw...

盡量以const和inline取代 define

define是屬於預處理器指令的,在effective c 中提到的條款1的標題如果改為 盡量以編譯器 compiler 取代預處理器 preprocessor 或許更好,因為 define通常不被視為語言本身的一部分。何為預處理器?預處理器是編譯器把c 編譯為機器指令之前執行的乙個過程,所有的預處...