本文目录一览:
perl ,php对文本进行替换问题。
我是在linux下测试的,你在windows下的话把文件路径中的分隔符”/”改成“\\”即可。
程序带两个参数,第一个参数是你第一个文件的路径;
第二个参数是你下面这些文件的总路径。
当然你可以更改程序头部,直接将这两个参数赋值过去。
给你做两种示例:
1. 命名为 test.pl , 执行 perl test.pl ‘d:\autocfg\compare\gcell.txt’ ‘D:\autogetcfg\CMECfgSyncView_20120225092703\’
2.将文件头部的my ($file,$dir) = @ARGV;
改为 my ($file,$dir) = (‘d:\autocfg\compare\gcell.txt
‘,’D:\autogetcfg\CMECfgSyncView_20120225092703\’);
然后直接执行 perl test.pl
最后的文本保存在test.pl同一级目录下的result.txt中,若使用中有问题请追问或私信或百度hi联系我。
#!/usr/bin/perl
use strict;
my ($file,$dir) = @ARGV;
if (!-e “$file”) {
print “$file not exist!\n”;
exit(-1);
}
if (!open FILE,”$file”) {
print “open $file failed!\n”;
exit(-1);
}
my %Cfg;
my ($cate,$index,$name);
while (FILE) {
chomp;
($cate,$index,$name) = split /,/,$_;
$Cfg{$cate}{$index} = $name;
}
close FILE;
my $content;
foreach my $cate (keys %Cfg) {
next if ($cate eq ”);
my ($part1,$part2) = ($1,$2) if ($cate =~ /(\D+)(\d+)/);
next if (!defined $part2) ;
my $subdir = “$part1″.’0′.”$part2/”;
if (-d “$dir/$subdir”) {
my @files;
opendir DIR, “$dir/$subdir/”;
foreach (readdir DIR) {
next if ($_ =~ /^\./ || $_ !~ /\.txt/);
push @files,$_;
}
closedir DIR;
foreach my $name (@files) {
if (!open FILE,”$dir/$subdir/$name”) {
print “open $dir/$subdir/$name failed!\n”;
next;
}
else{
foreach (FILE) {
chomp;
my ($index) = split /\s+/,$_;
$content .= “$Cfg{$cate}{$index}\t$_\n”
}
close FILE;
}
}
}
}
print “$content”;
open FILE , ” result.txt”;
print FILE $content;
close FILE;
print “content stored in result.txt,Succeed!\n”;
exit(0);
redhat5中用php调用perl,如system(“perl *.pl”)要创建一个txt文件,但是没有创建文件
首先,你创建空白文件的位置没有明确。php是否有权限在工作(未必是你所认为的目录)目录中创建文件。比较简单的方法是在perl文件中指定创建TXT文件的目录。要有组写入权限。
其次在PHP中执行和root帐号手工执行perl脚本时由于环境变量区别。可能需要指定perl的执行目录
一般是/usr/bin/perl如
system(“/usr/bin/perl /opt/var/test.pl”)
test.pl中创建文件:
open(outfile,”/opt/var/1.txt”);
php能替代perl么
perl最大的用处是系统管理和WEB编程。
就WEB编程来说,php完全能替代perl语言。
两种语言各有千秋,PHP针对WEB编程来说更方便和简单。
就比如c和C++那种语言好? 都好,但是具体针对的不同而已。
如果想WEB编程的话,毫无疑问选择PHP,而且这方面很多资料可以网上查找的。
PERL就先不用考虑了。
但如果是大牛级别的,扩展PHP的话,perl和C还是很有用的。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/282561.html