Beefy Boxes and Bandwidth Generously Provided by pair Networks Cowboy Neal with Hat
No such thing as a small change
 
PerlMonks  

RE: Hex Embedded Images (5.004 is different)

by ybiC (Prior)
on Jun 28, 2000 at 07:02 UTC ( [id://20132]=note: print w/replies, xml ) Need Help??

This is an archived low-energy page for bots and other anonmyous visitors. Please sign up if you are a human and want to interact.


in reply to Hex Embedded Images

I have to agree - it IS cool.

But when I try BBQ's code to unpack an image to hex, I receive the following error:

Too many arguments for substr near "'')" Execution aborted due to compilation errors

Suggestions from more advanced brothers ?

Perl 5.004
Debian 2.1

update 6-28-2000 : btrott pointed out that substr in Perl 5.004 is different, and provided this code (that does work with 5.004)

while ($txt = substr($hex, 0, 32)) { substr($hex, 0, 32) = ""; print "'$txt'\n"; }

Thanks also to swiftone, chromatic, and of course BBQ.
    ybiC

Replies are listed 'Best First'.
RE: RE: Hex Embedded Images
by BBQ (Curate) on Jun 28, 2000 at 14:44 UTC
    That's probably because you copied the code from my home node yesterday. I had binmode in the wrong place (after undef $/, not a good thing) and one thing probably lead to another. Is this what you have?
    #!/usr/bin/perl open(IMG,'foo.gif') or die("Couldn't open image: $!\n"); binmode(IMG); undef($/); $image = <IMG>; $hex = unpack("H*", $image); close(IMG); while ($txt = substr($hex,0,32,'')) { print "'$txt'\n"; }


    #!/home/bbq/bin/perl
    # Trust no1!

      Yeah, I did copy it yesterday, but I still get this error:

      Too many arguments for substr at ./gif2hex.perl line 17, near "'')" Execution of ./gif2hex.perl aborted due to compilation errors.

      with today's code from your home node:

      #!/usr/bin/perl -w # Description: Hex embedded images sample # Date: June 28, 2000 # Author: bbq@zaz.com.br # URL: http://johnny.warp.psi.br/perl/images.pl?img=text open IMG, "./arrow.gif" or die "Couldn't open image: $!\n"; binmode(IMG); undef $/; $image = <IMG>; $hex = unpack("H*", $image); close IMG; while ($txt = substr($hex,0,32,'')) { print "'$txt'\n"; } # END

      Thanks for you help - hope I'm not missing something obvious.
      This is definately CUFP.
          ybiC

        You're getting this compilation error because you have an older version of Perl. I'm guessing Perl 5.004 or something? Or less, perhaps.

        That version of substr wasn't added until 5.005. In the docs:

        An alternative to using substr() as an lvalue is to specify the replacement string as the 4th argument. This allows you to replace parts of the EXPR and return what was there before in one operation, just as you can with splice().
        You'll probably have to make do w/ a two-step operation; first get the first 32 characters using substr, then strip the first 32 characters:
        while ($txt = substr($hex, 0, 32)) { substr($hex, 0, 32) = ""; print "'$txt'\n"; }
        See if that works for you.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://20132]
help
Sections?
Information?
Find Nodes?
Leftovers?
    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.