Jim*_*Jim 6 windows perl command-line sha1
我在c:\ temp中有一个名为secure.txt的文件.我想从命令行运行Perl命令来打印secure.txt的SHA1哈希.我正在使用ActivePerl 5.8.2.我之前没有使用Perl,但它是目前最方便的选择.
Gre*_*con 20
perl -MDigest::SHA1=sha1_hex -le "print sha1_hex <>" secure.txt
Run Code Online (Sandbox Code Playgroud)
Perl的命令行选项记录在perlrun中.在上面的命令中从左到右:
-MDigest::SHA1=sha1_hex在编译时加载Digest :: SHA1模块并导入sha1_hex,它以十六进制形式提供摘要.-l 自动在任何结尾添加换行符 print-e 介绍要执行的Perl代码这个看起来很滑稽的钻石是Perl readline运营商的一个特例:
空文件句柄
<>是特殊的:它可以用来模仿的行为sed和awk.输入来自<>标准输入,或来自命令行中列出的每个文件.以下是它的工作原理:第一次<>计算,@ARGV数组被检查,如果是空,$ARGV[0]则设置为"-",打开时为您提供标准输入.@ARGV然后将该数组作为文件名列表处理.
因为secure.txt是命令行中唯一命名的文件,所以它的内容成为参数sha1_hex.
使用Perl版本5.10或更高版本,您可以将上面的单行缩短五个字符.
perl -MDigest::SHA=sha1_hex -E 'say sha1_hex<>' secure.txt
Run Code Online (Sandbox Code Playgroud)
代码删除了可选的(所有版本的Perl)空白之前<>,删除-l和切换-e到-E.
say FILEHANDLE LISTsay LIST
say就像
say LIST只是一个缩写Run Code Online (Sandbox Code Playgroud){ local $\ = "\n"; print LIST }此关键字仅在
say启用该功能时可用:请参阅feature.
如果您希望将此代码放在方便的实用程序中,请mysha1sum.pl使用
#! /usr/bin/perl
use warnings;
use strict;
use Digest::SHA1;
die "Usage: $0 file ..\n" unless @ARGV;
foreach my $file (@ARGV) {
my $fh;
unless (open $fh, $file) {
warn "$0: open $file: $!";
next;
}
my $sha1 = Digest::SHA1->new;
$sha1->addfile($fh);
print $sha1->hexdigest, " $file\n";
close $fh;
}
Run Code Online (Sandbox Code Playgroud)
这将计算命令行中命名的每个文件的摘要,并且输出格式与Unix sha1sum实用程序的输出格式兼容.
C:\> mysha1sum.pl mysha1sum.pl mysha1sum.pl
8f3a7288f1697b172820ef6be0a296560bc13bae mysha1sum.pl
8f3a7288f1697b172820ef6be0a296560bc13bae mysha1sum.pl
Run Code Online (Sandbox Code Playgroud)
你没有说你是否安装了Cygwin,但如果你这样做,sha1sum则是coreutils软件包的一部分.
小智 5
试试Digest :: SHA模块.
C:\> perl -MDigest::SHA -e "print Digest::SHA->new(1)->addfile('secure.txt')->hexdigest"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8822 次 |
| 最近记录: |