2011-07-15 99 views
0

下面的代码我试图产生正试图做到这一点:的Perl - 文件内容导入到另一个文件

我试图做的是运行BTEQ脚本从数据库获取数据然后导出到一个平面文件,该平面文件被选中我的Perl脚本(上面的代码),然后这篇文章试图让Perl导入该文件它进入一个fastload文件。这是否更有意义?

while (true) { 
    #Objective: open dir, get flat-file which was exported from bteq 
    opendir (DIR, "C:/q2refresh/") or die "Cannot open /my/dir: $!\n"; #open directory with the flat-file 
    my @Dircontent = readdir DIR; 
    $filetobecopied = "C:/q2refresh/q2_refresh_prod_export.txt"; #flatfile exported from bteq 
    $newfile = "C:/q2refresh/Q2_FastLoadFromFlatFile.txt"; #new file flat-file contents will be copied to as "fastload" 
    copy($filetobecopied, $newfile) or die "File cannot be copied."; 
    close DIR; 
    my $items_in_dir = @Dircontent; 
     if ($items_in_dir > 2) { # > 2 because of "." and ".." 
-->>>>>>  # take the copied FlatFile above and import into a fastload script located at C:/q2refresh/q2Fastload.txt 
     } 
     else {sleep 100;} 
} 

我需要执行上述粗体部分帮助。如何将C:/q2refresh/Q2_FastLoadFromFlatFile.txt的内容导入位于C:/q2refresh/q2Fastload.txt的快速脚本。

//我很抱歉,如果这有些新鲜,但我是Perl新手。

谢谢。

+0

什么“粗体部分”?粗体格式将被代码示例格式覆盖。 – TLP

+0

参见上文 - >>>>>>。 – Jshee

+0

我认为你需要澄清你到底想要做什么。这段代码真的没有解释任何东西。它看起来像你想创建一个永无休止的循环,它不断地复制文件到每个循环覆盖自己。 – TLP

回答

0
if ($items_in_dir > 2) { # > 2 because of "." and ".." 

以及包括...,加上q2_refresh_prod_export.txt两个副本的时候,你总是会在目录中有2页以上的文件。如果发生这种情况q2_refresh_prod_export.txt未被复制,脚本将die所以else子句将永远不会被调用。

此外,将文件复制到新位置是毫无意义的,如果您只是简单地将它复制到另一个位置。它不像“剪切&粘贴”,实际上,您将文件物理复制到新文件,而不是剪贴板。

如果“导入到”的意思是你要的q2_refresh_prod_export.txt内容附加到现有q2Fastload.txt,有很多方法可以做到这一点,比如什么特洛伊在另一个答案建议,与open>>(追加) 。

你必须理清这整个$items_in_dir条件的含义。您正在保存文件并将文件复制到该目录中,那么您究竟在检查什么?文件是否全部被删除(通过其他进程)?

0

我不能告诉你想要做什么。难道你只是想这样做?

open SOURCE, $newfile; 
open SINK, '>>C:/q2refresh/q2Fastload.txt'; 
while (<SOURCE>) { 
    print SINK $_; 
} 
close SOURCE; 
close SINK; 

这会将$ newfile的内容附加到快速加载文件中。

+1

特洛伊 - 我想要做的是运行一个BTEQ脚本,从数据库获取数据,然后导出到一个平面文件,该平面文件被拿起我的Perl脚本(上面的代码),然后尝试这个职位让perl将其导入到fastload文件中。这是否更有意义? – Jshee

+2

是的,这是有道理的。我认为你的问题是迄今没有人熟悉FastLoad或其文件格式。 – Troy

+1

@Troy这将是我的主要问题。 – TLP

相关问题