Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical

Re^3: Different behaviors between "while" and "map"

by betterworld (Curate)
on Dec 06, 2008 at 01:42 UTC ( #728454=note: print w/replies, xml ) Need Help??

in reply to Re^2: Different behaviors between "while" and "map"
in thread Different behaviors between "while" and "map"

It helps to know that the loop is expanded to:

while ($_ = <SOME_FILE_HANDLE>){ ... }

This shows that <...> is nothing more than a loop condition: the loop body is executed immediately after each evaluation of the <...> operator. This is how a while loop works.

Replies are listed 'Best First'.
Re^4: Different behaviors between "while" and "map"
by JavaFan (Canon) on Dec 06, 2008 at 02:18 UTC
    Not for the last 12 years or so. It's expanded to
    while (defined ($_ = <SOME_FILE_HANDLE>)) { ... }

      Technically, you're both right, because

      while ($_ = <SOME_FILE_HANDLE>){ ... }
      is expanded to
      while (defined ($_ = <SOME_FILE_HANDLE>)) { ... }

      But all this is irrelevant. It's not the magical expansion of <> that causes the scalar context.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://728454]
[Corion]: But yes, "who started this process" is interesting information :)
[tye]: no, I really believe that "login user" was added as a fundamental bit of info about each process in order to enhance the usefulness of auditing
[Corion]: Ah - if that information is saved in a file, then you could theoretically spam that file and confuse getlogin(). So, don't use it for authentication :)
[tye]: that is what getlogin() certainly *used* to do. I don't believe that is what it certainly should do.
[davido]: /var/run/utmp is 664 i think.
[tye]: Note that my "man getlogin" says that it uses stdin when it should use /dev/tty (calling a glibc bug). But that does not appear to be the case when I test it. But maybe Perl's getlogin() is not using glibc's getlogin().
[oiskuu]: well, run a strace and see what the getlogin does for you.... As I said. SELinux probably has those security labels. But not regular linux.
[tye]: for example, read https://unix. questions/146138/ loginuid-should-be -allowed-to-change -or-not-mutable-or -not
[tye]: I'm not using SELinux and it certainly appears to disagree with you. shrug
[tye]: Since you brought up /proc, oiskuu, I didn't see you respond to my suggestion of 'loginuid'. Does your /proc not have such?

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (6)
As of 2017-06-23 19:46 GMT
Find Nodes?
    Voting Booth?
    How many monitors do you use while coding?

    Results (554 votes). Check out past polls.