首先,你创燃伍建空白文件的位置没有明确。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")我是在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)
html解析的时候会自动将空白字符过滤掉,如空格、制表符、换行符、回车符,所以输出时纯虚需要进行转移对数据库中的字段用函培裤隐数replace(字段名配厅,chr(10),'
')
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)