私は変数とundefをグローバル化しようとしましたが、unixのデータセグメントスペースを増やして変数をローカライズしましたが、私は約750ファイルを処理する必要があります。誰でも助けてもらえますか?ありがとう。私は文字列にファイル全体を読むことが問題であるかもしれないことを知っています。しかし、私は他の方法についてはわかりません。しかし、私は文字列をグローバルとして宣言し、それを= ""とします。次回の反復でメモリを解放しますか?perlメモリのメッセージ処理がちょうど64 XMLファイルそれぞれ2MB - unix
foreach my $file_name (@dir_contents)
{
if(-f "rawdata/$file_name")
{
$xmlres="";
eval {
while(<FILE>)
{
$xmlres.=$_;
}
close FILE;
***$doc=$parser->parsestring($xmlres);***
foreach my $node($doc->getElementsByTagName("nam1"))
{
foreach my $tnode($node->getElementsByTagName(("name2")))
{
//processing
}
}
}
}}
これは完全なコードではありません。私にとってはコンパイルできません。エラーが多すぎます。 'switch/case'、本当ですか?それも機能しますか?キーワードは「与えられた」と「いつ」なのかと思った。 – TLP
別の「本当に?ここで大きなコードブロックに 'eval'を使用しています。サブルーチンを使用します。 –
Davidと同意します。このコードは混乱しています。変数が多すぎる、グローバルが多すぎる、奇妙なことが多すぎる。何らかの理由で 'eval'を使用してサブ変数内にグローバル変数を設定しています。スコープを制限する代わりにグローバル変数でundefを使用します。そしてあなたは厳密に使っているようには見えません。そうでなければ '$ src'は他のところで定義されています。私の助言は:適切なプログラミング技術を使用して、このコードを出して新しいものを書くことです。 – TLP