Wenn ich eine SQLite-Datenbankdatei öffne, steht am Anfang der Datei eine Menge lesbarer Text - wie groß ist die Wahrscheinlichkeit, dass eine SQLite-Datei aufgrund des Datei-Tests -B
falsch gefiltert wird?Wie zuverlässig ist der B-Dateitest?
#!/usr/bin/env perl
use warnings;
use strict;
use 5.10.1;
use File::Find;
my $dir = shift;
my $databases;
find({
wanted => sub {
my $file = $File::Find::name;
return if not -B $file;
return if not -s $file;
return if not -r $file;
say $file;
open my $fh, '<', $file or die "$file: $!";
my $firstline = readline($fh) // '';
close $fh or die $!;
push @$databases, $file if $firstline =~ /\ASQLite\sformat/;
},
no_chdir => 1,
},
$dir);
say scalar @$databases;
Ich glaube nicht, dass die Details von '-T' und' -B' dokumentiert sind, was bedeutet, dass sie sich in zukünftigen Versionen von Perl ändern könnten, nehme ich an. Aber das würde sie wiederum nutzlos machen ... Eine gute Antwort auf diese Frage würde die Details der Heuristik beschreiben. Ich habe mich immer gefragt – Nemo
Sie sind in perlfunc dokumentiert, wo alle Datei-Operatoren dokumentiert sind. Die Beschreibung ist jedoch vage. –