新手求救!

新手求救!

那为高手能帮解决一下:怎么把325个文本文档的内容写到另外2个文本文档当中去!所在文件路径c:\perl\data需要写到e:\
下面是我自己写的但是有错误不能实现,希望高手指点!
#!user/bin/perl
my @aa;
my @bb;
my $count;
for($count=chtb_001.sgm;$count <=chtb_144.sgm;$count++){
   pushcount,@aa,;
}
for($count=chtb_145.sgm;$count <=chtb_325.sgm;$count++){
   pushcount,@bb,;
}

open(File,">>e:\\1.txt") or die "can't open file\n";
  foreach (@aa)
     {print"$_\n";
     print File "$_\n";
     }
close(File);  
open(File,">>e:\\2.txt") or die "can't open file\n";
  foreach (@bb)
     {print"$_\n";
     print File "$_\n";
     }
close(File);
啥地方错也不说
pushcount这种函数难道是你的perl里面特有的?
还有,好好看看文件是如何读入的
再看看push的具体用法
帅哥,把问题说清楚先。。。
其实就是:怎样循环读取文件内容并写入到另外一个文本文件中。
例如把1.txt 2.txt 3.txt到20.txt的内容都写入到
aaa.txt中去。其中的循环读取这一部分老是写不对。希望你们帮忙
chtb_144.sgm 这是perl 6的语法吗?
还是Object的??
很少写Object...
另外你给的代码....除了你之外..我看没人能run...
LZ....在多给点信息吧..


QUOTE:
原帖由 bdwangchen 于 2008-5-19 17:39 发表
其实就是:怎样循环读取文件内容并写入到另外一个文本文件中。
例如把1.txt 2.txt 3.txt到20.txt的内容都写入到
aaa.txt中去。其中的循环读取这一部分老是写不对。希望你们帮忙

那你自己先解决怎么读取一个文件再说


QUOTE:
原帖由 bdwangchen 于 2008-5-19 16:10 发表
那为高手能帮解决一下:怎么把325个文本文档的内容写到另外2个文本文档当中去!所在文件路径c:\perl\data需要写到e:\
下面是我自己写的但是有错误不能实现,希望高手指点!
#!user/bin/perl
my @aa;
my @bb;
my $count;
for($count=chtb_001.sgm;$count <=chtb_144.sgm;$count++){ # 1
   pushcount,@aa,; # 2
}
for($count=chtb_145.sgm;$count <=chtb_325.sgm;$count++){
   pushcount,@bb,;
}

open(File,">>e:\\1.txt") or die "can't open file\n";
  foreach (@aa)
     {print"$_\n";
     print File "$_\n";
     }
close(File);  
open(File,">>e:\\2.txt") or die "can't open file\n";
  foreach (@bb)
     {print"$_\n";
     print File "$_\n";
     }
close(File);

1 这里$count变量递增不正确,$count="chtb_001"可递增,但$count="chtb_001.sgm"却不可递增,还有,尽量不要用光字
2 按你的思路,这里应该为push @aa $count; 但就算改为这个,你也没法在后面把文件内容写入另一个文件,因为你没有读文件,即你可能是想把open(FILEi, "<$count");<FILEi>的内容push到@aa中,但事实上你不需循环,<FILELIST>中FILELIST可为一组文件名,从而可把所有文件都读出来,好好研究一下空的<>吧。


[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl

use strict;
use warnings;

my @aa;
my @bb;
my $count;

for ('001'..'144') {
    push @aa, 'chtb_'.$_.'sgm';
}

for ('145'..'325') {
    push @bb, 'chtb_'.$_.'sgm';
}

my $output_1 = 'e:/1.txt';
my $output_2 = 'e:/2.txt';

open File, ">>$output_1"
    or die "can't open file: $!\n";

for (@aa) {
    open TMP, "$_" or die;
        print File $_ while (<TMP>);
   
}

open File, ">>$output_2"
    or die "can't open file: $!\n";

for (@bb) {
        open TMP, "$_" or die;
        print File $_ while (<TMP>);
}

谢谢你的帮助!我想得到的是001-144里面的内容存储到1.txt中 而不是文件名145-325也相同!
还有我不太明白你在25行中写的TMP是什么意思!希望你解答!
谢谢!我新手望多多关照


QUOTE:
原帖由 bdwangchen 于 2008-5-19 20:28 发表
谢谢你的帮助!我想得到的是001-144里面的内容存储到1.txt中 而不是文件名145-325也相同!
还有我不太明白你在25行中写的TMP是什么意思!希望你解答!
谢谢!我新手望多多关照

TMP 跟你那个 File 是一个意思。不过,文件句柄 一般都用大写的,你那个我没改。
我的代码就是把文件内容读出来,存到另一个文件中去啊。

建议你读读 Learning Perl 4th. 看看前面几章就可以解决你的问题了