tie::fileモジュールについて2つのクエリがあります
tie ::fileモジュールを使用して55MBのファイルを検索し、tie::fileに20MBのメモリを設定しました。結合された配列で検索文字列をgrepしようとすると、かなりの時間がかかります。回避策はありますか?
バイナリファイルの読み取りに使用されるtie::fileを使用できます。結合された配列は「\n」で区切られます。tie :: fileを使用してバイナリファイルを読み取るにはどうすればよいですか?サンプルコードを貼り付けていただけませんか。
/ home / a814899> perl -e'print "x \ n" x27 for 1..1024 * 1024;' > a
/ home / a814899> echo "hello world" >> a
Using Unix grep
/home/a814899> time grep "hello " a
hello world
real 0m8.280s
user 0m8.129s
sys 0m0.139s
Using the regex
/home/a814899> (time perl -e 'while (<>) { if (/hello/) { print "hello world"} }' a)
hello world
real 0m51.316s
user 0m51.087s
sys 0m0.189s
Using Perl Grep
#!/usr/bin/perl
print "executing\n";
my $outputFileDir="/home/a814899";
my $sFileName="a";
open my $fh, "<", $outputFileDir . "/" . $sFileName or do {
print "Could not open the file";
};
print "success in open" . "\n";
my @out=grep {/hello world/} <$fh> ;
print "@out" ;
close($fh)