diff --git a/lib/Module/Signature.pm b/lib/Module/Signature.pm index 40b4520..c2d51fb 100644 --- a/lib/Module/Signature.pm +++ b/lib/Module/Signature.pm @@ -462,14 +462,11 @@ sub _sign_gpg { my $key_id; my $key_name; - # This doesn't work because the output from verify goes to STDERR. - # If I try to redirect it using "--logger-fd 1" it just hangs. - # WTF? - my @verify = `$gpg --batch --verify $SIGNATURE`; - while (@verify) { - if (/key ID ([0-9A-F]+)$/) { + my @verify = `$gpg --batch --logger-fd 1 --verify $SIGNATURE`; + foreach (@verify) { + if (/key(?: ID)? ([0-9A-F]+)$/) { $key_id = $1; - } elsif (/signature from "(.+)"$/) { + } elsif (/signature from "(.+)"(?: \[[a-z]+\])?$/) { $key_name = $1; } } @@ -478,7 +475,7 @@ sub _sign_gpg { my $found_key; if (defined $key_id && defined $key_name) { my $keyserver = _keyserver($version); - while (`$gpg --batch --keyserver=$keyserver --search-keys '$key_name'`) { + foreach (`$gpg --batch --keyserver=$keyserver --search-keys '$key_name'`) { if (/^\(\d+\)/) { $found_name = 0; } elsif ($found_name) {