免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: iakgnehc
打印 上一主题 下一主题

关于defined函数 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2009-05-11 11:32 |只看该作者
还是不清楚!

具体点,写出代码好吗?谢谢各位!

论坛徽章:
1
未羊
日期:2014-09-08 22:47:27
12 [报告]
发表于 2009-05-11 12:08 |只看该作者
你应该看看小骆驼书,真的很简单的。

论坛徽章:
0
13 [报告]
发表于 2009-05-11 12:20 |只看该作者
原帖由 iakgnehc 于 2009-5-11 10:13 发表
目的:
接受键盘的任意输入值,并输出;当没有输入时,利用defined()做检测,输出提示“please input :";

代码:
#!/usr/bin/perl
print "Please input: ";
$result=;

print ...



“接受键盘的任意输入值,并输出”,这个任意值揣摩LZ意图应该是不包括换行符,
但<STDIN>为行输入,当输入一行时,得到的$result肯定包括换行,所以对$result,先要去掉换行符,再判断是否为空,而不是用defined来判断是否有定义;但可以用defined来判断是否遇到EOF,或者直接在while循环中判断

#!/usr/bin/perl -w


print "Please input:";
while (<STDIN>){
    chomp;
    if ($_ ne ''){
        print "$_\n";
    }
    print "Please input:";
}

论坛徽章:
0
14 [报告]
发表于 2009-05-11 13:11 |只看该作者
原帖由 iceberg77 于 2009-5-11 12:20 发表



“接受键盘的任意输入值,并输出”,这个任意值揣摩LZ意图应该是不包括换行符,
但为行输入,当输入一行时,得到的$result肯定包括换行,所以对$result,先要去掉换行符,再判断是否为空,而不是用define ...


非常感谢提示!

我照着做了一下练习!初步有个印象了!本来的想法是这样:练习”分辨其值是undef 还是空串,可以使用defined 函数,它将在为undef 时返回false,其余返回true。“
突然想来个更进一步的练习,接受输入并输出;若没有输入则提示请输入。原来还波及其它知识点。

先至此吧!

等我学和差不多的时候再来处理。刚开始学习perl。见到一个练习就想试试,所以引来了不少麻烦。当然也没说清楚原意,因为自己都不知道需要哪些知识!不过,大家这么热心回帖,我很开心,谢谢以上各位!

[ 本帖最后由 iakgnehc 于 2009-5-11 13:12 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
15 [报告]
发表于 2009-05-11 13:31 |只看该作者
程凯啊,你得好好学习小骆驼才行啊。

论坛徽章:
0
16 [报告]
发表于 2009-05-11 14:22 |只看该作者
是开才对!

了解:
大骆驼指的《Programming Perl (3rd Edition)》。
小骆驼指的《OReilly.Learning Perl 5th》。

目前学习perl的目的是用来做freebsd方面的系统管理工作。谢谢指点!

[ 本帖最后由 iakgnehc 于 2009-5-11 14:57 编辑 ]

论坛徽章:
0
17 [报告]
发表于 2012-05-21 22:26 |只看该作者
本帖最后由 xulei_lx 于 2012-05-21 22:27 编辑

执行之后按ctrl+D就行了

  1. [root@lx Perl]# cat ./test.pl
  2. #!/usr/bin/perl
  3. print "Please input: ";
  4. $result=<STDIN>;
  5. if( defined($result)) {
  6. print "The input was $result\n";
  7. }else {
  8. print "please input \n";
  9. }

  10. [root@lx Perl]# ./test.pl
  11. Please input: please input
  12. [root@lx Perl]#
复制代码

论坛徽章:
0
18 [报告]
发表于 2012-07-17 15:30 |只看该作者
加上chomp吧,应该是你没有去掉结尾的换行符

论坛徽章:
3
2015亚冠之阿尔希拉尔
日期:2015-08-15 16:33:2215-16赛季CBA联赛之四川
日期:2016-01-03 13:37:0515-16赛季CBA联赛之四川
日期:2016-06-13 15:53:36
19 [报告]
发表于 2012-07-18 10:51 |只看该作者
  1. $result=<STDIN>;
复制代码
后面加上一句:
  1. chomp($result);
复制代码

论坛徽章:
0
20 [报告]
发表于 2012-07-18 14:11 |只看该作者
用 chomp()
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP