Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

RE: Hex Embedded Images (5.004 is different)

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


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 18: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
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others wandering the Monastery: (6)
As of 2024-04-19 14:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found