Perl 入门 之 标量比较 以及 默认参数 $_

#! /usr/bin/perl

require 5.22.2;
#最常用的默认参数
$_ = "hello perl \n";
print;

CANDIDATE: for my $candidate ( 2 .. 100 ) {
    for my $divisor ( 2 .. sqrt $candidate ) {
        next CANDIDATE if $candidate % $divisor == 0;
    }
    print $candidate." is prime\n";
}

#Perl 中标量比较。
Numeric    String         Meaning
==            eq           equal
!=            ne           not equal
<             lt           less than
>             gt           greater than
<=            le           less than or equal
>=            ge           greater then or equal

eg.

 12.0   == 12    TRUE  #数字比较
 #因为Perl的==操作符会把字符串转换成数字。
"12.0"  == 12    TRUE  #数字比较
 #因为Perl的 eq 操作符会把数字转换成字符串。
"12.0"  eq 12    FALSE #字符比较
  2     <   3    TRUE  #数字
  2    lt   3    TRUE  #字符
 12     >   3    TRUE  #数字
 12    gt   3    FALSE #! (注意,开始时这个可能不明显) 字符 1 小于 字符3 ,比较的是 ASCII码


#如果你使用use warnings开启警告,会获得两条警告信息。
#警告的原因是你在数值比较 == 的时候传入了两个字符串作为数字。
#在上一节我们提到过,Perl会查看字符串的左边并尝试把所有有意义的转换成数字。
#因为这两个字符串以字母开头,它们都会转换成0. 0 == 0 返回真。
"foo"  ==  ""    TRUE  #! (如果使用"warning"指令会发出警告) 
"foo"  eq  ""    FALSE #  不相等
"foo"  == "bar"  TRUE  #! (如果使用"warning"指令会发出警告)
"foo"  eq "bar"  FALSE

最后的例子中有一个陷阱,如果你获得一个用户输入,然后小心翼翼的删除换行符,最后检查给定的字符串是否为空。

use strict;
use warnings;
use 5.010;

print "input: ";
my $name = <STDIN>;
chomp $name;

if ( $name == "" ) {   # 错误!这里你需要使用eq而不是==!
  say "TRUE";
} else {
  say "FALSE";
}

如果执行这个脚本的时候输入”abc”则会返回TRUE,就好象Perl将”abc”看作空字符串处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值