Добавьте хеш md5 в сабвуфер Perl - PullRequest
0 голосов
/ 11 ноября 2011

Как можно добавить md5sum файла в список выходных данных ниже. Поэтому последняя запись будет MD5 = ". $ Md5 .

106         sub generate_file_hash(){
107            my $filename = shift;
108
109            $MASTERCOUNT++;
110
111            my ($devs, $ino, $mode, $nlink, $uid, $gid, $rdev,
112                 $size, $atime, $mtime, $ctime, $blksize, $blocks) = stat($filename);
113
114            open(FILE, $filename) or die "Can't open '$filename': $!";
115            binmode(FILE);
116            $md5 = Digest::MD5->new->addfile(*FILE)->hexdigest();
117
118            return($filename . ",PERMISSIONS=" . $devs  . ",INODE=" . $ino  .
119                           ",MODE=" . $mode  . ",HARD LINKS=" .
120                           $nlink . ",UID=" . $uid  . ",GID=" . $gid  .
121                           ",DEVICE=" . $rdev  . ",SIZE=" .
122                           $size . ",LAST MODIFIED=" .  $mtime  .
123                           ",INODE CREATED=" . $ctime  . ",BLOCK SIZE=" .
124                           $blksize . ",BLOCKS=" . $blocks . ",MD5=" . $md5);
125         }

Ошибка:

Глобальному символу "$ md5" требуется явное имя пакета в строке целостности 116. Глобальный символ "$ md5" требует явного имени пакета в строке целостности 124.

В настоящее время вывод:

/etc/group,PERMISSIONS=51712,INODE=565260,MODE=33188,HARD LINKS=1,UID=0,GID=0,DEVICE=0,SIZE=595,LAST MODIFIED=1273887035,INODE CREATED=1273887035,BLOCK SIZE=4096,BLOCKS=8

Таким образом, значение MD5 файла будет добавлено.

1 Ответ

3 голосов
/ 11 ноября 2011
use Digest::MD5;

open(FILE, $filename) or die "Can't open '$filename': $!";
binmode(FILE);
my $md5 = Digest::MD5->new->addfile(*FILE)->hexdigest();

Прочтите справочную страницу Digest::MD5 для получения дополнительной информации о различных способах использования модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...