Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re (chip): Two-arg open() considered dangerous

by chip (Curate)
on Dec 12, 2001 at 03:50 UTC ( #131109=note: print w/replies, xml ) Need Help??

in reply to Re (tilly) 1: Two-arg open() considered dangerous
in thread Two-arg open() considered dangerous

I agree that three-arg open is a bit new to depend on, but sysopen may not be inconvenient. Specifically, it's guaranteed{1} that O_RDONLY, O_WRONLY, and O_RDWR have the values zero, one, and two, respectively. So sysopen FOO, $file, 0 should work everywhere in the known universe.

{1} This is OK to count on because the C function open() originates with Unix, and for backwards compatibility with ancient UNIX code, the second parameter of open() must accept zero/one/two.

    -- Chip Salzenberg, Free-Floating Agent of Chaos

Replies are listed 'Best First'.
Re (tilly) 3: Two-arg open() considered dangerous
by tilly (Archbishop) on Dec 12, 2001 at 03:54 UTC
    It is not guaranteed. From 'perldoc -f sysopen' on 5.005_03 I get:
    =item sysopen FILEHANDLE,FILENAME,MODE =item sysopen FILEHANDLE,FILENAME,MODE,PERMS [ snip ] The possible values and flag bits of the MODE parameter are system-dependent; they are available via the standard module C<Fcntl>. For historical reasons, some values work on almost every system supported by perl: zero means read-only, one means write-only, and two means read/write. We know that these values do I<not> work under OS/390 & VM/ESA Unix and on the Macintosh; you probably don't want to use them in new code.
    So those values probably work. But not always.
      Damn. I had no idea that there were systems that broken that could still run a modern Perl.

          -- Chip Salzenberg, Free-Floating Agent of Chaos

        Either way, it's more readable with the explicit constant names exported by Fcntl, which is good for all those coders coming to your code from a two-arg open() mentality/background.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://131109]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (2)
As of 2020-10-24 15:48 GMT
Find Nodes?
    Voting Booth?
    My favourite web site is:

    Results (245 votes). Check out past polls.