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

xiaoxiao2021-02-27  174

#! /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”看作空字符串处理。

转载请注明原文地址: https://www.6miu.com/read-14846.html

最新回复(0)