【发布时间】:2011-11-11 11:17:17
【问题描述】:
如何将文件的 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”需要在 integritychk 第 116 行显示包名。
全局符号“$md5”需要在 integritychk 第 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 值。
【问题讨论】:
-
您的程序正在使用
strict运行(这很好。)您需要在使用它们之前使用my声明变量。所以my $md5 = Digest::MD5->new....会修复它。