Beefy Boxes and Bandwidth Generously Provided by pair Networks
good chemistry is complicated,
and a little bit messy -LW
 
PerlMonks  

Why isn't my octal data interpreted correctly?

by faq_monk (Initiate)
on Oct 08, 1999 at 00:20 UTC ( #578=perlfaq nodetype: print w/replies, xml ) Need Help??

Current Perl documentation can be found at perldoc.perl.org.

Here is our local, out-dated (pre-5.6) version:

Perl only understands octal and hex numbers as such when they occur as literals in your program. If they are read in from somewhere and assigned, no automatic conversion takes place. You must explicitly use oct() or hex() if you want the values converted. oct() interprets both hex (``0x350'') numbers and octal ones (``0350'' or even without the leading ``0'', like ``377''), while hex() only converts hexadecimal ones, with or without a leading ``0x'', like ``0x255'', ``3A'', ``ff'', or ``deadbeef''.

This problem shows up most often when people try using chmod(), mkdir(), umask(), or sysopen(), which all want permissions in octal.

    chmod(644,  $file); # WRONG -- perl -w catches this
    chmod(0644, $file); # right

Log In?
Username:
Password:

What's my password?
Create A New User
Chatterbox?
[Lady_Aleena]: tobyink, I did after I failed to get the BLOCK to work. I can't seem to get my brain around grep BLOCK, though I'm okay with grep EXPR.
[shmem]: so in the second example grep returns all true elements of the list passed
[Lady_Aleena]: Okay, so grep BLOCK is not like map BLOCK where something might need to be returned at the end.
[tobyink]: grep { $_ =~ /.*$in.*/; } @my_modules should work just fine. The problem is that you were adding on ;$_ at the end of the block. Why were you doing that?
[Lady_Aleena]: tobyink, I was thinking map.
[tobyink]: Something does need to be returned at the end not $_ though. You need to return (something that will be evaluated as) a boolean.
[Lady_Aleena]: Here is a longish map I did in the same script. my @my_modules = map { my $file = $_; $file =~ s/$module_director y(.+)\.pm/$1/; $file =~ s/\//::/g; $file; } @files;
[Lady_Aleena]: I spent half an hour trying to figure out why map was rewriting @files.
[tobyink]: If you like map you can do map { ($_ =~ /.*$in.*/) ? $_ : () } @my_modules and it will work just the same. grep is neater though.
[Lady_Aleena]: tobyink, I'll keep the grep as is. Thanks everyone!

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (9)
As of 2017-05-27 07:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?