Как я могу вычислить хеш MD5 wav файла в Perl?

Нет жестко закодированных значений.

Нет JavaScript.

Нет приближений.

Хитрость заключается в том, чтобы использовать скрытый & amp; дублируется div, чтобы браузер понял, что означает 100%.

Этот метод подходит всякий раз, когда вы можете дублировать DOM элемента, который хотите анимировать.

.outer {
  border: dashed red 1px;
  position: relative;
}

.dummy {
  visibility: hidden;
}

.real {
  position: absolute;
  background: yellow;
  height: 0;
  transition: height 0.5s;
  overflow: hidden;
}

.outer:hover>.real {
  height: 100%;
}
Hover over the box below:
<div class="outer">
  <!-- The actual element that you'd like to animate -->
  <div class="real">
unpredictable content unpredictable content unpredictable content unpredictable content unpredictable content unpredictable content unpredictable content unpredictable content unpredictable content unpredictable content unpredictable content unpredictable
content unpredictable content unpredictable content unpredictable content
  </div>
  <!-- An exact copy of the element you'd like to animate. -->
  <div class="dummy" aria-hidden="true">
unpredictable content unpredictable content unpredictable content unpredictable content unpredictable content unpredictable content unpredictable content unpredictable content unpredictable content unpredictable content unpredictable content unpredictable
content unpredictable content unpredictable content unpredictable content
  </div>
</div>
8
задан MSalters 24 June 2009 в 14:21
поделиться

5 ответов

Для этого есть модуль: Digest :: MD5 :: File . С его помощью код упрощается до:

use Digest::MD5::File qw( file_md5_hex );
my $md5 = file_md5_hex( $some_file_name );
19
ответ дан 5 December 2019 в 04:36
поделиться

Используя Digest :: MD5

use Digest::MD5 qw(md5);
my $hash;
{
    local $/ = undef;
    open FILE, "$wav_file_name";
    binmode FILE;
    my $data = <FILE>;
    close FILE;
    $hash = md5($data);
}

или вы можете использовать объектно-ориентированный интерфейс:

use Digest::MD5;

open FILE, "$wav_file_name";

my $ctx = Digest::MD5->new;
$ctx->addfile (*FILE);
my $hash = $ctx->digest;
close (FILE);
9
ответ дан 5 December 2019 в 04:36
поделиться

Конечно, можно. Просто найдите Digest :: MD5 для части хеширования и любой модуль, связанный с WAV , если вы хотите хешировать определенную часть файла (например, пропуская метаданные).

12
ответ дан 5 December 2019 в 04:36
поделиться

Просто используйте Digest :: MD5 .

В зависимости от ваших потребностей, Перцепционное хеширование , кстати, тоже может быть интересным. Это позволяет сравнивать файлы, сравнивая их хэши (похожее содержимое имеет похожие хеши). Однако до сих пор нет реализации Perl AFAIK.

3
ответ дан 5 December 2019 в 04:36
поделиться

Использование File :: Slurp с Digest :: MD5 :

#!/usr/bin/perl

use strict;
use warnings;

use Digest::MD5 qw(md5_hex);
use File::Slurp;

my ($input) = @ARGV;

write_file "$input.md5", md5_hex(scalar read_file $input, binmode => ':raw'), "\n";
2
ответ дан 5 December 2019 в 04:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: