Perl comes with a whole bunch of cryptically-named built-invariables, which clever Perl programmers exploit to reduce the number oflines of code in their scripts. This article examines some of the morecommonly-used special variable in Perl, with examples and illustrations ofhow they may be used.
You can obtain information on the user and group the Perl script is running as, with the following four variables:
$< - the real UID of the process
$> - the effective UID of the process
$) - the real GID of the process
$( - the effective GID of the process
A difference between "real" and "effective" IDs appears when you use the setuid() or setgid() command to change the user or group. The "real" ID is always the one prior to the setuid() or setgid() call; the "effective" one is the one you've changed into following the call.
Consider the following example, which demonstrates:
Real UID: 515 Real GID: 100 514 501 100 Effective UID: 515 Effective GID: 100 514 501 100
Notice that the $) and $( commands return a list of all the groups the user belongs to, not just the primary group.
Of course, most often this is not very useful by itself. What you really need is a way to map the numeric IDs into actual user and group names. And Perl comes with built-in functions to do this - consider the following example, which illustrates:
#!/usr/bin/perl
# set record separator
$\=" ";
# print user and group
print "This script is running as " . getpwuid($>) . " who
belongs to the
following groups:";