博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
perl 从文件里读出变量无法使用解决办法
阅读量:6979 次
发布时间:2019-06-27

本文共 1573 字,大约阅读时间需要 5 分钟。

最近在写一个perl函数,把test case 放到配置文件里,读出来然后使用system运行。

我的本意是:

      配置文件conf

    

ping -c $count $ip #在主程序中定义$ip和$count

     从配置文件中拿出这句ping -c $count $ip 将其在system中执行,其中事先定义好$count=10 $ip="192.168.1.1";

    

#!/usr/bin/perl -wuse strict;my $ip="192.168.1.1";my $count=10;open(CONF,"conf") or die "$!\n";my $ping=
;close(CONF);sub run_conf{ my $conf=shift; print "run $conf \n"; system($conf) or die "$!\n";}&run_conf($ping);

 

 这样,按预期应该可以,会执行 ping -c 10 192.168.1.1 (linux下)

结果却是:

 

[root@localhost Desktop]# perl run.pl

run ping -c $count $ip
ping: bad number of packets to transmit.

 不解,于是我直接把$ping 设置为

$ping="ping -c $count $ip";

不从conf读取

再次运行: 出现期望的

[root@localhost Desktop]# perl run.pl

run ping -c 10 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.

--- 192.168.1.1 ping statistics ---

10 packets transmitted, 0 received, 100% packet loss, time 19014ms

 为毛从文件读取的内容,变量未被替换??? 我是这样猜想,perl为了安全起见,就把文件读取的内容,以q的方式或者说是' ',不使用转义,保持原型

就好比 print 'ping -c $count $ip' ,输出的话变量未经替换。

 

解决方案: 

       使用替换 $ping=~s/\$ip/$ip/; 将$ip替换为当前变量ip

                   $ping=~s/\$count/$count/;

 

#!/usr/bin/perl -wuse strict;my $ip="192.168.1.1";my $count=10;open(CONF,"conf") or die "$!\n";my $ping=
;close(CONF);$ping=~s/\$count/$count/;$ping=~s/\$ip/$ip/;sub run_conf{ my $conf=shift; print "run $conf \n"; system($conf) or die "$!\n";}&run_conf($ping);

 

 

 

再次运行: 和预期一样

    

[root@localhost Desktop]# perl run.pl

run ping -c 10 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.

--- 192.168.1.1 ping statistics ---

10 packets transmitted, 0 received, 100% packet loss, time 19004ms

 

转载地址:http://csupl.baihongyu.com/

你可能感兴趣的文章
《21世纪机器人》一一第1章 他用自己的思想打造机器人
查看>>
《Unity着色器和屏幕特效》——2.2 进阶的透明效果
查看>>
《Adobe Premiere Pro CC经典教程(彩色版)》——2.2 建立项目
查看>>
初级Java程序员所面临的4大挑战
查看>>
《算法基础:打开算法之门》一1.5 拓展阅读
查看>>
移动应用开发者应该关注的 Google I/O 两项更新
查看>>
2014 年美国程序员薪资调查
查看>>
方差,标准差,协方差、期望值
查看>>
java异常笔记
查看>>
区域链实践第一步——区域链测试环境搭建
查看>>
《C语言及程序设计》实践项目——画分支结构流程图
查看>>
Qt 自定义信号与槽
查看>>
百度地图 ip查询 service
查看>>
Java新手如何学习三大框架
查看>>
Learn Jenkins the hard way (0) - Jenkins的罪与罚
查看>>
Hadoop history
查看>>
mysql limit offset
查看>>
statpot:使用mongo+bootstrap+highcharts做统计报表
查看>>
文件上传的渐进式增强
查看>>
Linux Shell 脚本限制ssh最大用户登录数
查看>>