2011-07-15 13 views
0

私はこれをやろうとしている生成しようとしている以下のコードへのファイルのインポート内容:Perlの他のファイル

は、私は何をしようとしていることBTEQスクリプトを実行していますDBからデータを取得してフラットファイルにエクスポートし、そのフラットファイルを私のPerlスクリプト(上記のコード)で取得し、このポストでperlにそのファイルをインポートさせようとすると、ファストロードファイルに入ります。それは理にかなっていますか?

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つのコピーを含めて、あなたは常にディレクトリに2つ以上のファイルを持つことになります。このようなケースでq2_refresh_prod_export.txtがコピーされない場合は、スクリプトはdieになります。 したがって、else節は決して呼び出されません。

また、ファイルを別の場所にコピーする場合は、新しい場所にコピーするのは無意味です。 「&貼り付けをカットする」のようなものではなく、実際には、ファイルをクリップボードではなく新しいファイルに物理的にコピーします。

既存q2Fastload.txtq2_refresh_prod_export.txtの内容を追加したいという意味で「へのインポート」で、このようトロイはopen>>(に追加)して、別の答えで提案されているものとそれをする方法は、存在する場合。

この全体の意味は、$items_in_dirの状態を整理する必要があります。あなたはファイルを保管しておき、そのディレクトリにファイルをコピーしているので、あなたはそれを正確にチェックしていますか?ファイルがすべて削除されているかどうか(他のプロセスによって)

0

私はあなたが何をしようとしているかは分かりません。これをやりたいだけかもしれませんか?

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

これは、fastloadファイルに$ newfileの内容を追加します。

+1

Troy-私がやろうとしているのは、DBからデータを取得してフラットファイルにエクスポートするBTEQスクリプトを実行することです。フラットファイルはPerlスクリプト(上記のコード)を取得してから、このポストを試してみてくださいperlにそのファイルをインポートさせるには、それをfastloadファイルに入れます。それは理にかなっていますか? – Jshee

+2

はい、それは意味があります。あなたの問題は、FastLoadまたはそのファイル形式についてこれまでのところ誰も熟知していないということです。 – Troy

+1

@トロイそれが私の主な問題です。 – TLP