免费注册 查看新帖 |

Chinaunix

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

or 和 || 有区别吗 ? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-02 12:05 |只看该作者 |正序浏览
有什么比较大的区别不? 谢谢

我碰到了如下的情景:
  1. 1. open F, ">not_exist_file" or die($!);
复制代码
  1. 2 .open F, ">not_exist_file" || die($!);
复制代码
1成功了,2却不行,怎么回事呢?

论坛徽章:
0
13 [报告]
发表于 2010-02-02 16:58 |只看该作者
回复 12# yybmsrs


  哈 明白了  确实是优先级别的问题。
">not_exist_file" || die($!)  这样用,这句的后半句 die($!)  等于是废了。
所以文件存在的时候看不出啥问题。文件不存在的时候,一句会执行 die($!)  ,一句不会。

: Thanks All

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
12 [报告]
发表于 2010-02-02 16:49 |只看该作者
回复 11# toniz


    恩

论坛徽章:
0
11 [报告]
发表于 2010-02-02 16:48 |只看该作者
回复 10# yybmsrs


    你的意思是说,第一个的DIE执行了,第二个的DIE没有执行。是吧。

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
10 [报告]
发表于 2010-02-02 16:41 |只看该作者
回复 9# toniz


这种情况没有区别,都不会错。

但是读的话可以看出差别。

论坛徽章:
0
9 [报告]
发表于 2010-02-02 16:39 |只看该作者
回复 7# yybmsrs


    你在代码的同个目录下,新建一个名字叫“not_exist_file”的文件  随便填几行进去 再跑跑。

论坛徽章:
0
8 [报告]
发表于 2010-02-02 16:36 |只看该作者
open( F, ">not_exist_file") or die($!);
open(F, ">not_exist_file" )|| die($!);
结果在我这里是一致的,最好加个括号

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
7 [报告]
发表于 2010-02-02 16:34 |只看该作者
  1. open FH, "not_exist_file" or die($!);
  2. while(<FH>)
  3. {
  4.         print ;       
  5. }
复制代码
无此文件或目录 at .//yy.pl line 22.
  1. open FH, "not_exist_file" || die($!);
  2. while(<FH>)
  3. {
  4.         print ;       
  5. }
复制代码
readline() on closed filehandle FH at .//yy.pl line 23.

论坛徽章:
0
6 [报告]
发表于 2010-02-02 16:22 |只看该作者
回复 4# dugu072_cu


    我觉得这里的逗号应该是分割符,而不是逗号操作符。所以两句应该是一样的。

论坛徽章:
0
5 [报告]
发表于 2010-02-02 16:13 |只看该作者
回复 4# dugu072_cu

   查了下确实逗号的优先级刚好在两个中间。
    那就奇怪了  我用的时候居然没问题  我倒 !
  1. [etl@dmtest _xwj]$ cat a.txt
  2. yyy
  3. [etl@dmtest _xwj]$ cat ttt.pl
  4. use strict;
  5. open F, "<a.txt" || die($!);
  6. while(<F>){
  7.         print ;
  8. }
  9. [etl@dmtest _xwj]$ perl ttt.pl
  10. yyy
复制代码
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP