Когда вы выполняете сравнение строк, и оно неожиданно завершается неудачей, выведите строки, чтобы увидеть, что на самом деле в них. Я ставлю скобки вокруг значения, чтобы увидеть дополнительные пробелы:
use MIME::Base64;
$b64 = encode_base64("test");
print "b64 is [$b64]\n";
if ($b64 eq "dGVzdA==") {
print "true";
}
Это базовая техника отладки с использованием лучшего из когда-либо изобретенных отладчиков. Привыкайте к нему много. :)
Кроме того, иногда вам нужно пару раз прочитать документацию, чтобы поймать важные детали. В этом случае MIME :: Base64 говорит вам, что encode_base64
принимает два аргумента. Второй аргумент - это конец строки, по умолчанию это перевод строки. Если вам не нужна новая строка в конце строки, вам нужно задать ей еще один конец строки, например, пустую строку:
encode_base64("test", "")