本文目錄一覽:
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/zh-hant/n/282561.html