当前位置: 首页 > news >正文

软件公司网站模板下载南通网站建设推广专家

软件公司网站模板下载,南通网站建设推广专家,重庆建站管理系统信息,推广赚钱小程序引言 记录自己跳进的【perl】编程小坑,以己为鉴。 1、eq $str1 "12345\n"; $str2 "12345"; if ($str1 eq $str2) { print "OK" } 上述代码不会打印 OK。特别在读文件 ,匹配字符串时容易出BUG。 案例说明: 有…



引言

记录自己跳进的【perl】编程小坑,以己为鉴。


1、eq

$str1 = "12345\n"; $str2 = "12345";

if ($str1 eq $str2)

{

        print "OK"

}

上述代码不会打印 OK。特别在读文件 ,匹配字符串时容易出BUG。

案例说明:

有一个需求,对于test_A.txt文件的每一行,找出test_B.txt文件中与之相同的内容,打印该行内容,并显示行号。

test_A.txt 以及 test_B.txt 文件中内容:

如果你的代码是这么写的:

open test_A_handle , "<D:\\Perl_WorkSpace\\test_A.txt\n" or die "can't open the file test_A.txt\n";
open test_B_handle , "<D:\\Perl_WorkSpace\\test_B.txt\n" or die "can't open the file test_B.txt\n";$pos = tell(test_B_handle);#获取文件指针位置,因为刚打开文件,所以 $pos为0while (my $str1 = <test_A_handle>)
{seek(test_B_handle,$pos,0);#使文件指针回到文件头my $cnt = 0;while(my $str2 = <test_B_handle>){   $cnt++;if ($str1 eq $str2){print "match string :" . $str1 . " ";print "line num : " . $cnt . "\n";}}
}
close test_A_handle;
close test_B_handle;

那么你得到的结果是:

match string :1111111line num : 5
match string :1111111line num : 9
match string :2222222line num : 6
match string :3333333line num : 7
match string :4444444line num : 8
match string :1234567line num : 1
match string :0000000line num : 2
match string :0978157line num : 3

乍一看没啥毛病,但是细看发现test_A.txt文件中第一行,在test_B.txt文件的第12行也出现了,但是没有匹配到。原因在哪里呢?因为test_B.txt文件的第12行是最后一行,行末没有换行符\n,因为perl认为 "1111111" 不等于 "1111111\n"。那么我们在比较之前用chomp函数将换行符去掉即可解决这个小BUG。代码:

open test_A_handle , "<D:\\Perl_WorkSpace\\test_A.txt\n" or die "can't open the file test_A.txt\n";
open test_B_handle , "<D:\\Perl_WorkSpace\\test_B.txt\n" or die "can't open the file test_B.txt\n";$pos = tell(test_B_handle);#获取文件指针位置,因为刚打开文件,所以 $pos为0while (my $str1 = <test_A_handle>)
{   chomp $str1;seek(test_B_handle,$pos,0);#使文件指针回到文件头my $cnt = 0;while(my $str2 = <test_B_handle>){   chomp $str2;$cnt++;if ($str1 eq $str2){print "match string :" . $str1 . " ";print "line num : " . $cnt . "\n";}}
}
close test_A_handle;
close test_B_handle;

输出:

2、split 

my $str_1 = "ab cd ef gh 12 34 56\n";
my @array_1 = split(' ',$str_1);
print @array_1;
print "1234567890";

上述代码片段输出结果是什么?

abcdefgh1234561234567890

还是

abcdefgh123456

1234567890

split拆分之后,将\n去除了。也即是说$array_1[6] = "56" 而非 “56\n”

http://www.yayakq.cn/news/495139/

相关文章:

  • 网站安全建设费用预算表《网站开发与应用》大作业要求
  • 手机网站百度关键词排名单位网站建设维护论文
  • 郴州文明网网站网站 迁移
  • 全网网站建设推广广东企业网站制作
  • wordpress建的网站便宜 虚拟主机
  • 电子商务网站建设与管理李建忠凡科网站能在百度做推广吗
  • 做开箱的网站html怎么做多个网页
  • 筑云电商网站建设公司淄博学校网站建设公司
  • 中小型网站开发网站站外推广的内外链接怎么做
  • 建wordpress丹阳网站优化
  • 网站后台怎么上传图片产品洪江市网站
  • 巨鹿网站建设设计在线花钱做网站
  • 互联网教育网站开发查询域名信息
  • 动漫做h免费网站有哪些微信推广引流方法
  • 房产网站模板绍兴网站建设哪好
  • 网站设计流程步骤企业信息查询app哪个最好
  • 上杭网站建设o2o电子商务网站建设
  • wordpress建站的好处大连小型网站建设
  • 模拟网站建设织梦网站图标
  • 中国建设网官方网站电子银行小公司简介模板
  • 广东建设公司网站烟台定制网站建设价格
  • 网站建设接单渠道做爰片免费观看网站
  • 云服务器怎么上传网站关键词分类
  • 网站建设需要多少人陕西省建设工程招投标信息网官网
  • 宣讲家网站支部建设重庆网站推广运营
  • 嘉兴ai人工智能开发网站建设好用的海报设计网站
  • 越秀区建设水务局网站北京高端网站建
  • 甜品网站建设项目规划书论坛建设免费
  • 手机怎么上wap网站茶类网站建设方案
  • 提出网络营销思想的网站改版计划oa系统手机端