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

Thanks a ton! This gave identical result for $hash1 and $hash2. Any idea why backticks are problematic here?

Replies are listed 'Best First'.
Re^5: Grave accent caveats
by derby (Abbot) on Jan 19, 2009 at 18:06 UTC

    I'm guessing that the 'echo' command perl is picking up for use is not the same one you're using from the command line (which is probably not the standalone echo command but a shell builtin). You can play around by providing the full path to stand-alone echo (in both your perl script and on the command line) to see what happens.

    -derby
      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!

        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?