perl紧急求助!

xfljt 2004-12-09 12:06:21
本人需要从一个文件里依次读出字符串,如下:
FixedString_NewSS;
TWnd_FrameRectX;
TWnd_InvalRectX;
以";"为结束,然后从一个目录里(包含多个子目录)的文件搜索该关键字,比如
FixedString_NewSS,要求全字匹配,大小写匹配,找到后依次进行替换,替换格式为
xxxabc_FixedString_NewSS.望那位熟悉perl语言的兄弟能提供一下参考代码,不胜
感激!
...全文
81 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
yakai 2004-12-10
  • 打赏
  • 举报
回复
然后从一个目录里(包含多个子目录)的文件搜索该关键字
是文件名还是文件里的内容?

FixedString_NewSS;
TWnd_FrameRectX;

中间是否有换行符?
SwordMan2001 2004-12-10
  • 打赏
  • 举报
回复
遍历目录,找出所有的文件进行处理既可.
运行: xx.pl <input_str_file> <dir_name>

#! /usr/bin/perl -w

use strict;

# @ARGV = qw(input ./temp); #????

open (hInput, $ARGV[0]) || die "open input fail";

my @m_replaceStrs;
while ($_ = <hInput>) {
/^(\w+);/? push(@m_replaceStrs, $1): next;
}

# use DFS to get all files
my @stack = $ARGV[1];
my $sFile;
while ($sFile = pop(@stack)) {
if (-f $sFile) {
&HandleFile($sFile);
}
elsif (-d $sFile) {
opendir(hDir, $sFile) || die("can't open dir: $sFile -");
while ($_ = readdir(hDir)) {
next if $_ eq '.' || $_ eq '..';
push (@stack, $sFile . '/' . $_);
}
closedir (hDir);
}
}
#########
sub HandleFile # ($sFile)
{
# print $sFile, "\n";
open (hInput, $sFile);
open (hOutput, ">tmp_$$");
while (my $line = <hInput>) {
for (@m_replaceStrs) {
$line =~ s/$_/xxxabc_$_/g;
}
print hOutput $line;
}
close (hInput);
close (hOutput);
rename ("tmp_$$", $sFile);
}
xfljt 2004-12-10
  • 打赏
  • 举报
回复
有换行符.

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧