in reply to Re^5: Grave accent caveats
in thread Grave accent/Backtick/`` caveats

You are right. I changed

$hash1 = `echo -n $text|openssl dgst -sha1`;

to

$hash1 = `/bin/echo -n $text|openssl dgst -sha1`;

and I now get the expected values. Thanks for your help!

Replies are listed 'Best First'.
Re^7: Grave accent caveats
by almut (Canon) on Jan 19, 2009 at 18:44 UTC

    Interesting. Normally, when you type echo in a shell, its echo builtin is being used (I think this applies to OS X, too).

    Initially, I suspected a difference between the echo shell builtin and /bin/echo to be the cause here, but then, on second thought, rejected the hypothesis, as you said you were getting the correct digest when issuing the openssl command on the command line with the same plain "echo".

    In other words, as I see things, with a plain "echo" you should be using the builtin in both cases, i.e. from within the backticks (because of the '|' symbol, which should cause Perl to run the command via the shell (sh -c ...)), as well as on the interactive command line (which is a shell, anyway, typically).  So I'm still wondering what's different here on OS X.  Any ideas, anyone?

      Probably because the interactive login shell is different than the shell that Perl uses.

      What's baffling me now is that this doesn't seem to happen with Perl 5.10 on Mac OS X (as someone on this thread confirms).