在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 7294|回复: 14

[求助] Perl能否读取文件时直接代入perl变量

[复制链接]
发表于 2013-2-5 10:12:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
例如,我有个文本文件test.txt,内容是:
My name is $name.

现在我在perl脚本里定义了变量
$name="eetop";
我希望在perl里打开test.txt,输出其内容,并且$name代入了perl里定义的值。
即输出:My name is eetop。
还有就是,真正的test.txt里可能有很多变量,所以不希望用查找“$name”字符串替换成$name变量值的方式。
这样一一查找感觉效率比较低。
请教下有什么比较好的实现方式吗。
发表于 2013-2-5 11:00:12 | 显示全部楼层
回复 1# orlye


   
例如,我有个文本文件test.txt,内容是:
My name is $name.

现在我在perl脚本里定义了变量
$name="eetop";
我希望在perl里打开test.txt,输出其内容,并且$name代入了perl里定义的值。
即输出:My name is eetop。
还有就是,真正的test.txt里可能有很多变量,所以不希望用查找“$name”字符串替换成$name变量值的方式。
这样一一查找感觉效率比较低。
请教下有什么比较好的实现方式吗。


-------------------------------------------------------------

我所知的就是对读入文件每行迭代,然后对每行查找$name关键字,然后替换。
不知是否属于你不希望的“*查找*“$name”字符串替换成$name变量值的方式”。
发表于 2013-2-5 14:13:38 | 显示全部楼层
分行依次替换我感觉是最简单的实现方法了吧
 楼主| 发表于 2013-2-5 21:11:06 | 显示全部楼层
谢谢回答。
每行迭代查找我也想到了,就是觉得效率比较低。
如果只好这样的话,就只能老老实实迭代查找了。
发表于 2013-2-6 09:02:58 | 显示全部楼层
回复 4# orlye


   
谢谢回答。
每行迭代查找我也想到了,就是觉得效率比较低。
如果只好这样的话,就只能老老实实迭代查找了。

--------------------------------------------
如果特别想提速,你需要看看最耗时间的是哪一步。
你可以考虑优化一下程序的结构:比如先对所有行进行迭代,再对每行中对所有变量进行迭代,应当比先迭代所有变量,再迭代所有行要快。
诸如此类。
 楼主| 发表于 2013-2-6 12:53:04 | 显示全部楼层
回复 5# sjtusonic


    谢谢版大。学习了。
发表于 2013-2-6 15:59:19 | 显示全部楼层
回复 1# orlye 一个偷懒的办法
用perl 生成一个perl再用生成的perl 去迭代变量,打印出最后的文件


############  test.txt ##############My name is $name.
My ID is $id.

############  结   果   ##############
My name is eetop.
My ID is 888.


############  主程序   ##############
   #! /usr/bin/perl -w

open Fout , ">sub_var.pl" ;
print Fout '
$name = "eetop" ;
$id   = "888" ;
        ' ;


open Fin , "$ARGV[0]" ;
$file = "" ;
while (<Fin>) {
$file = $file.$_ ;
} ;
close Fin ;


print Fout "
open Fout \, \"\>$ARGV[0]_sub\" \;
print Fout \"$file\" \;
close Fout \;
" ;
print Fout "\n" ;


system "chmod 750 sub_var.pl" ;
system "perl sub_var.pl" ;
发表于 2013-2-6 16:01:15 | 显示全部楼层
不过貌似效率也不高
发表于 2013-2-7 08:42:57 | 显示全部楼层
回复 7# 射门靴


    学习了!
 楼主| 发表于 2013-2-7 20:59:17 | 显示全部楼层
回复 7# 射门靴


    这个想法有意思。学习了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /3 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-24 09:15 , Processed in 0.041045 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表