Нет жестко закодированных значений.
Нет 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>
Для этого есть модуль: Digest :: MD5 :: File . С его помощью код упрощается до:
use Digest::MD5::File qw( file_md5_hex );
my $md5 = file_md5_hex( $some_file_name );
Используя 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);
Конечно, можно. Просто найдите Digest :: MD5 для части хеширования и любой модуль, связанный с WAV , если вы хотите хешировать определенную часть файла (например, пропуская метаданные).
Просто используйте Digest :: MD5 .
В зависимости от ваших потребностей, Перцепционное хеширование , кстати, тоже может быть интересным. Это позволяет сравнивать файлы, сравнивая их хэши (похожее содержимое имеет похожие хеши). Однако до сих пор нет реализации Perl AFAIK.
Использование 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";