perl 中的or与||的区别

来看看下面的代码会输出什么?

代码如下:

my $a = 0;
$a = $a or 1;
print $a, "\n";
$a = $a || 1;
print $a, "\n";

输出:
0
1
为什么呢?因为||, =, or 这三者优先级从左至右逐渐降低。
所以,这样写可以:
chomp(my $filename = shift( @ARGV ) || <STDIN>);

这样则不行:
chomp(my $filename = shift( @ARGV ) or <STDIN>);
会提示如下错误:
Can't modify logical or (||) in chomp

(0)

相关推荐

  • Perl中chomp和chop的区别介绍

    chomp是用来删除换行符. 复制代码 代码如下: #!/usr/bin/perl $c="abcde"; chomp($c); print "$c\n"; [root@ak]# perl a.pl abcde chop是用来删除最后一个字符. 复制代码 代码如下: #!/usr/bin/perl $c="abcde"; chop($c); print "$c\n"; [root@ak]# perl a.pl abcd cho

  • perl中my与our的区别介绍

    先来看下our的用法. require 5.006当版本号小于 5.006 的时候,会返回失败,从而导致模块加载失败.所以它的作用就是保证模块调用环境的 Perl 版本. our 和 my 一样,都是对变量的声明,不过 our 声明的是包全局变量,而 my 声明的是词法变量. 不过,经过 our 声明的变量,它会变得像一个词法变量一样,其实这也是 our 存在的目的:用来欺骗 strict pragma,使 strict 以为它是一个词法变量,其实却不是. 有一个简单的办法可以理解 our:1,

  • perl中my和our的区别分析

    perl中our的用法require 5.006当版本号小于 5.006 的时候,会返回失败,从而导致模块加载失败.所以它的作用就是保证模块调用环境的 Perl 版本. our 和 my 一样,都是对变量的声明,不过 our 声明的是包全局变量,而 my 声明的是词法变量. 不过,经过 our 声明的变量,它会变得像一个词法变量一样,其实这也是 our 存在的目的:用来欺骗 strict pragma,使 strict 以为它是一个词法变量,其实却不是. 有一个简单的办法可以理解 our:1,你

  • perl 中的or与||的区别

    来看看下面的代码会输出什么? 复制代码 代码如下: my $a = 0;$a = $a or 1;print $a, "\n";$a = $a || 1;print $a, "\n"; 输出:01为什么呢?因为||, =, or 这三者优先级从左至右逐渐降低.所以,这样写可以:chomp(my $filename = shift( @ARGV ) || <STDIN>); 这样则不行:chomp(my $filename = shift( @ARGV )

  • perl中chomp的使用介绍(chop和chomp函数区别)

    例子: 复制代码 代码如下: #!/bin/perlprint "Please input an string and a number by order!\n";  $the_string=<>;  $the_numb=<>;  print "The result is \n";  print "$the_string"x"$the_numb"; 结果:The result is   my  my 

  • Perl中的真与假深入研究

    Perl认为真值是自明的(self-evident), 表示任何事物的真值都可以计算.Perl以实用的方式来定义真值,即一个实体的真值取决于这个实体的类型.Perl总是乐观的认为:这个世界上真的东西远比假的东西多的多. Perl区别与任何其他计算机语言,Perl是语言学家创造的,而语言的意思离不开上下文语境,所以Perl中的真值都可以在标量(标量$与数组@类似于英文中的单数与复数, book 与 books的区别, 真值在现实世界中,应该就是单数,所以是标量)计算,除此之外,不会做任何类型的强制

  • Perl中的文件读写学习笔记

    一.打开.关闭文件 语法为open (filevar, filename),其中filevar为文件句柄,或者说是程序中用来代表某文件的代号,filename为文件名,其路径可为相对路径,亦可为绝对路径. 复制代码 代码如下: open(FILE1,"file1");  open(FILE1, "/u/jqpublic/file1"); 打开文件时必须决定访问模式,在PERL中有三种访问模式:读.写和添加.后两种模式的区别在于写模式将原文件覆盖,原有内容丢失,形式为

  • perl中的字符串操作函数chomp与chop介绍

    chomp与chop都是用于去除字符串变量尾部的字符,但它们有各自的区别. chomp函数对变量起作用,而此变量含有字符串.如果字符串结尾有换行符,chomp可以去掉它.这基本上就是它能完成的所有功能,如下例: 复制代码 代码如下: $text="alineoftext\n      "; #也可以由<STDIN>输入 chomp($text);    #去掉换行符(\n). 它非常有用,基本上你的每一个程序都会用到它.如你将知道,这是将字符串末尾换行符去掉的最好方法.基于

  • Perl中use和require用法对比分析

    Perl use和require用法对比 对比(一)说明:这两个函数都是一个意思,加载和引用Perl的模块,或者是子程序, 区别在于Perl use是在当前默认的里面去寻找,一旦模块不在指定的区域内的化,用Perl use是不可以引入的 第一.Perl use引入的名称不需要后缀名,而require需要第二.Perl use语句是编译时引入的,require是运行时引入的第三,Perl use引入模块的同时,也引入了模块的子模块.而require则不能引入,要在重新声明 Perl use my

  • C++ 中引用与指针的区别实例详解

    C++ 中引用与指针的区别实例详解 引用是从C++才引入的,在C中不存在.为了搞清楚引用的概念,得先搞明白变量的定义及引用与变量的区别,变量的要素一共有两个:名称与空间. 引用不是变量,它仅仅是变量的别名,没有自己独立的空间,它只符合变量的"名称"这个要素,而"空间"这个要素并不满足.换句话说,引用需要与它所引用的变量共享同一个内存空间,对引用所做的改变实际上是对所引用的变量做出修改.并且引用在定义的时候就必须被初始化.     参数传递的类型及相关要点: 1 按值

随机推荐