Прошлой ночью, перед тем как лечь спать, я снова просмотрел раздел «Скалярные данные» изучения Perl и наткнулся на следующее предложение:
возможность иметь любой символ в строке означает, что вы можете создавать, сканировать и манипулировать необработанными двоичными данными в виде строк.
Мне сразу же пришла в голову мысль, что я могу позволить Perl сканировать фотографии, хранящиеся на моем жестком диске, чтобы проверить, содержат ли они строку Adobe. Похоже, я могу сказать, какие из них были сфотографированы. Поэтому я попытался реализовать идею и придумал следующий код:
#!perl
use autodie;
use strict;
use warnings;
{
local $/="\n\n";
my $dir = 'f:/TestPix/';
my @pix = glob "$dir/*";
foreach my $file (@pix) {
open my $pic,'<', "$file";
while(<$pic>) {
if (/Adobe/) {
print "$file\n";
}
}
}
}
Захватывающе, код, кажется, действительно работает, и он выполняет фильтрацию фотографий, которые были фотоделаны. Но проблема в том, что многие картинки редактируются другими утилитами. Я думаю, что я застрял там. Есть ли у нас какой-то простой, но универсальный метод, чтобы сказать, было ли отредактировано цифровое изображение или нет, что-то вроде
if (!= /the origianl format/) {...}
Или нам просто нужно добавить больше условий? как
if (/Adobe/|/ACDSee/|/some other picture editors/)
Есть идеи по этому поводу? Или я слишком упрощен из-за моих крайне ограниченных знаний в области программирования?
Спасибо, как всегда, за любые указания.