免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 7702 | 回复: 20
打印 上一主题 下一主题

关于defined函数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-11 10:13 |只看该作者 |倒序浏览
目的:
接受键盘的任意输入值,并输出;当没有输入时,利用defined()做检测,输出提示“please input :";

代码:
#!/usr/bin/perl
print "Please input: ";
$result=<STDIN>;
if( defined($result)) {
print "The input was $result\n";
}else {
print "please input \n";
}

执行后,当我只打回车,输出的是:The input was
随便输入:abcde,输出的是:The input was abcde

怎么办才能做到不输入任意字符,会输出:please input

论坛徽章:
0
2 [报告]
发表于 2009-05-11 10:16 |只看该作者
perldoc perlvar 看看$|
这个和defined无关吧~

论坛徽章:
0
3 [报告]
发表于 2009-05-11 10:26 |只看该作者
$result 中是有值的 "\n"

论坛徽章:
0
4 [报告]
发表于 2009-05-11 11:03 |只看该作者
原帖由 dugu072 于 2009-5-11 10:16 发表
perldoc perlvar 看看$|
这个和defined无关吧~


新手,刚刚学习。这个练习是来自<<Perl语言入门第四版>>。

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

那我这个问题,怎么来处理呢?

谢谢

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

论坛徽章:
0
5 [报告]
发表于 2009-05-11 11:08 |只看该作者
$|      If set to nonzero, forces a flush right away and after every
        write or print on the currently selected output channel.

论坛徽章:
0
6 [报告]
发表于 2009-05-11 11:09 |只看该作者
我回答的是:
怎么办才能做到不输入任意字符,会输出:please input

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
7 [报告]
发表于 2009-05-11 11:15 |只看该作者
原帖由 dugu072 于 2009-5-11 11:09 发表
我回答的是:
怎么办才能做到不输入任意字符,会输出:please input

这个可不像个回答,倒很像个问题。这个问题的答案就是你在 5 楼的回复,或者手工 flush stdout。

论坛徽章:
0
8 [报告]
发表于 2009-05-11 11:18 |只看该作者
我说的是,我回答的是这个问题,因为我看楼主一直在翻defined的东西,以为他理解错了我的回答……

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
9 [报告]
发表于 2009-05-11 11:20 |只看该作者
原帖由 dugu072 于 2009-5-11 11:18 发表
我说的是,我回答的是这个问题,因为我看楼主一直在翻defined的东西,以为他理解错了我的回答……

论坛徽章:
0
10 [报告]
发表于 2009-05-11 11:21 |只看该作者
原帖由 DQP 于 2009-5-11 10:26 发表
$result 中是有值的 "\n"



This is answer .

add "\n" in "print" code!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP