Perl学习----my和state

编译指令–use strict

当程序较长时,由于疏忽可能会出现同一个变量名多次被声明:

  • 如果没有 use strict Perl 会默认后一个声明的覆盖先前声明的变量
  • 加上 use strict 后,如果出现同一个变量名多次被声明,编译的时候会给出警告

词法变量–my

  • 如果在程序开头加上 use strict,那么在程序的任何位置,每次要声明一个新的变量,必须要加上 my
  • 在子程序中声明的变量,如果未出现在任何其他任何语句块中,那么这个变量就是私有的
  • my 操作符不加括号时,只能用来声明单个词法变量
	my $fred, $barney;		#没声明$barney
	my ($fred, $barney);	#两个都声明了

my 在子程序创建的私有变量,每次调用这个子程序时,这个私有变量都会被重新定义,如果想让这个私有变量承接之前的值,则要用到 state

持续性私有变量–state

state 声明的变量,可以在子程序多次调用期间,保留变量之前的值,并将变量的作用域局限于子程序内容部

  1 use strict;
  2 
  3 sub var_my{
  4     my $num += 1;
  5     print "The value of \$num is: $num\n";
  6 }
  7 
  8 var_my;
  9 var_my;
 10 var_my;
 11 var_my;
}

输出结果为:

 1 use 5.010;
  2 
  3 sub var_state{
  4     state $num = 0;
  5     $num += 1;
  6     print "The value of \$num is: $num\n";
  7 }
  8 
  9 var_state;
 10 var_state;
 11 var_state;
 12 var_state;
               

输出结果为:

值得注意的是,state $num = 0 只有在子程序第一次被调用的时候有效,在后续调用时,这个表达式会被直接忽略

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PerlIO::via::QuotedPrint是Perl语言中的一个模块,用于在文件读写时对数据进行Quoted-Printable编码和解码。Quoted-Printable是一种用于在ASCII字符集中表示非ASCII字符的编码方式,常用于电子邮件和网络传输中。PerlIO::via::QuotedPrint模块提供了一种方便的方式,可以在文件读写时对数据进行Quoted-Printable编码和解码。 PerlIO::via::QuotedPrint模块的使用方法与其他PerlIO模块类似。可以使用open函数打开一个文件句柄,并指定PerlIO::via::QuotedPrint模块作为过滤器,从而实现对文件数据的编码和解码。 下面是一个使用PerlIO::via::QuotedPrint模块对文件进行Quoted-Printable编码和解码的例子: ``` use PerlIO::via::QuotedPrint; # Quoted-Printable编码 open(my $fh, '>:via(QuotedPrint)', 'file.txt'); print $fh "这是一段中文文本\n"; close($fh); # Quoted-Printable解码 open(my $fh, '<:via(QuotedPrint)', 'file.txt'); while(my $line = <$fh>) { print $line; } close($fh); ``` 在上面的例子中,我们使用了PerlIO::via::QuotedPrint模块对一个文件进行了编码和解码。在第一个open函数中,我们使用了':via(QuotedPrint)'指定了PerlIO::via::QuotedPrint模块作为过滤器,从而将写入文件的数据进行了Quoted-Printable编码。在第二个open函数中,我们同样使用了':via(QuotedPrint)'指定了PerlIO::via::QuotedPrint模块作为过滤器,从而将读取的数据进行了Quoted-Printable解码。 使用PerlIO::via::QuotedPrint模块可以方便地对文件数据进行Quoted-Printable编码和解码,从而满足不同应用场景中对数据编码的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值