zoukankan      html  css  js  c++  java
  • perl转载undef简介 defined函数简介

    (一)undef简介 
    变量在第一次赋值前有一个特殊值undef,按照Perl来说就是: “这里什么也没有,请继续” 。如果这里的“什么也没有”是一些“数字” ,则表现为 0。如果是“字符串” ,则表现为空串。但undef 既非数字也非字符串,它是另一种标量类型。
    由于undef 在需要数字的地方可以自动转化为 0,因此可以如下的写代码:
    #!/usr/bin/perl
    while($n<10){
    $sum+=$n;
    $n+=2;
    }
    print "The total was $sum.\n";

    Output:  The total was 20.

    上述代码在$sum未初始化(undef)时也能正确执行。第一次执行时,循环体中第一行$n值为1,因此将1 加给$sum。而$sum就像已经有值0,因为$sum值为 undef。现在其值 1。之后,由于其已被初始化,其过程同普通的类似。
    同样的,针对字符串的情形:$string.= “ moretext\n”;
    如果$string为 undef;则是空串后接“ moretext \n” 。反之,则是其值后接 “ moretext\n” 。
    Perl程序员在使用新变量时,经常不初始化,从而将变量作为0 或者空串使用。许多操作当参数不恰当时返回undef。如果没做特殊处理,通常会得到0 或者空串。实践中,这几乎不会有什么问题。实际上,许多程序员利用这种性质。但应当知道如果警告是打开的,那Perl 在你不恰当的使用未定义值时会提醒你。例如,将一个undef 的变量赋给另一个变量不会有什么问题,但如果print某个未定义的值则将引起警告。

    (二)defined函数简介
    能返回 undef 的操作之一是行输入操作,<STDIN>。通常,它会返回文本中的一行。但如果没有更多的输入,如到了文件的结尾,则返回undef。要分辨其是undef 还是空串,可以使用 defined函数,它将在为undef 时返回false,其余返回true。事实上,从键盘输入,不会有 “ end-of-file” ,但其可重定向到文件中再输入。或者用户可能输入某些键,而系统将其作为end-of-file看待。
    比如:
    #!/usr/bin/perl
    $madonna=<STDIN>;
    if(defined($madonna)){
    print "The input was $madonna";
    }else{
    print "No input available!\n";
    }


    如果想声明自己的undef 值,可以使用undef:$madonna=undef;  同$madonna 从未被初始化一样。

  • 相关阅读:
    hdu 5101 Select
    hdu 5100 Chessboard
    cf B. I.O.U.
    cf C. Inna and Dima
    cf B. Inna and Nine
    cf C. Counting Kangaroos is Fun
    Radar Installation 贪心
    spfa模板
    Sequence
    棋盘问题
  • 原文地址:https://www.cnblogs.com/blueicely/p/2860940.html
Copyright © 2011-2022 走看看