perl小笔记

这篇Perl小笔记涵盖了将数值转换为科学计数法、使用特殊变量名、引用类型的判断、字符串比较和大小写转换、FindBin与Cwd模块的区别以及'+'号的作用和子例程返回值的解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

perl将普通数值转换为科学计数法数字:

  • 用sprintf转化
  • my $result = sprintf("%.8e", 123456); ## $result => 1.23456000e+005

参见另一篇


如何在perl中使用特殊名的变量名形式:

$@的变量名形式:$EVAL_ERROR
$&的变量名形式:$MATCH
  • use English;  ## 启用perl长变量名
  • use English "-no_match_vars";  ## 启用,但是对正则表达式特殊变量不生效

内置函数ref判断引用类型技巧:

  • print ref \'' , "\n";  ## SCALAR
  • print ref [] , "\n"; ## ARRAY
  • print ref sub {} , "\n"; ## CODE
  • print ref {}, "\n"; ## HASH
  • print ref \[], "\n"; ## REF
  • print ref qr//, "\n"; ## Regexp

      ##    如果要判断一个引用是SCALAR类型,使用 ( ref($ref) eq ref \'' ),而不是( ref($ref) eq "SCALAR" ),做到尽量避免硬编码。


"<=>" "cmp"

  • 'n1<=>n2'  飞船操作符用于比较数字,小于返回-1、等于返回0、大于返回1.
  • 's1 cmp s2'  cmp用于比较字符串,小于返回-1、等于返回0、大于返回1.


perl字符串大小写转换操作

  • lc: 全部将字符串转换为小写,适用于ASCII.
  • uc: 全部将字符串转换为小写,适用于ASCII
  • lcfirst: 把字符串首字母转换为小写
  • ucfirst: 把字符串首字母转换为大写
  • fc: 完全unicode大小写转换,既不能称作大写也不能称作小写,它把字符串转换为一种大小写映射格式.(第4种大小写形式,暂时还没理解)

模块FindBin和Cwd的区别

  • FindBin获取的是脚本所在的路径

  • Cwd获取的是运行脚本时shell所在的路径


perl中的‘+’号的作用

  • 由于大括号还有很多其他构造(包括代码块),有时可能必须在语句开头消除大括号的歧义,在前面加一个+或者return,这样perl就能知道这个开始大括号并不是要开始一个代码块
  • sub hashem { {@_} }  ## return @_;
    
    sub hashem { +{@_} } ## return a hash_reference

  • 在一元操作符和列表操作符中,如果后面的第一个token是一个左括号(忽略空白),这个操作符及用括号括起来的参数将拥有最高优先级。有这样一个规则:如果看起来像是一个函数调用,这就是一个函数调用。通过在括号前加一个一元加号+,可以让它看起来想一个非函数。
  • print ($a + $b) * $c; ## error 
    print +($a + $b) * $c; ## print (($a + $b)*$c);

子例程的返回值

  • 子例程的返回值是 最后计算的表达式的值。
  • 或者可用显示的return返回一个值。
  • 子例程在一个标量或者列表上下文中调用时,例程中最后计算的表达式也会在同一个标量或列表上下文中计算。
  • wantarray,列表上下文返回true,标量上下文返回false,voild上下文返回undefined。
  • sub func {
        my @array = qw(a b c d e);
    }
  • sub fun {
    	my @array = qw(a b c d e);
    	return wantarray ? @array : "myString!";
    }
    
    
    
      




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值