http://www.perlmonks.org?node_id=431077


in reply to I usually debug via...

I start with  -w and use strict so I generally catch errors as I go. I use a lot of print statements as I am creating a script to make sure everything is where I expect it to be, and if I am stuck chasing something specific, good old perl -d usually does the trick.


-Kevin
my $a='62696c6c77667269656e6440676d61696c2e636f6d'; while ($a=~m/(^.{2})/s) {print unpack('A',pack('H*',"$1"));$a=~s/^.{2}//s;}

Replies are listed 'Best First'.
Re^2: I usually debug via...
by dmorelli (Scribe) on Feb 24, 2005 at 14:52 UTC
    Kevin, your sig code was nagging me. I was able to shorten it down to this:

    perl -e '$a="62696c6c77667269656e6440676d61696c2e636f6d";print unpack("A",pack("H*","$1")) while ($a=~s/(^.{2})//s)'

    You don't need both the m// and s///, just one s/// will do. And the block { } notation after the while isn't necessary.

      hmm ... superdoc's version may be shorter or whatever, but it doesn't run on windoze due to a syntax error. Kevin's has the advantage of actually working.
        Hm. Could be that cmd.exe shell and quoting. Maybe this one will work:

        perl -e '$a=qq/447564652c2067657420726964206f662057696e646f 7773/;print (chr hex $1) while ($a=~s/(^.{2})//)'

        Or with double-quotes:

        perl -e "$a=qq/447564652c2067657420726964206f662057696e646f 7773/;print (chr hex $1) while ($a=~s/(^.{2})//)"
        I don't have access to any Windows machine at all to try it on.