I saw the question on Perl $$var -- two dollar signs as a sigil? and that double dollar sign is used to dereference
I have this perl code
sub sock_initialize {
my $sock = q{};
my $port = q{};
# $name running
my $max_count = 250;
my $timeout = 5;
my $max_retries = 36;
# Get a port for our server.
$sock = IO::Socket::INET->new(
Listen => SOMAXCONN, # listen queue depth
LocalPort => 0,
Reuse => 1
);
die "Unable to bind a port: $!" if !$sock;
$port = $sock->sockport();
my $ip = inet_ntoa( scalar gethostbyname( $HOST ));
my $uid = (getpwuid( $> ))[2];
my $queue = join(":", $ip, $port, $$, $uid);
print sprintf("started on port $port ($$), SOMAXCONN=%d\n", SOMAXCONN);
return $sock;
} ## end sub sock_initialize
from the above code, what does double dollar sign dereferencing? my $queue = join(":", $ip, $port, $$, $uid);
Like under bash and other POSIX
shell: $$
is current process id (PID)
For man perlvar
:
$PROCESS_ID $PID $$ The process number of the Perl running this script. Though you can set this variable, doing so is generally discouraged, although it can be invaluable for some testing purposes. It will be reset automatically across "fork()" calls.
Nota: from man perl
Reference Manual perlsyn Perl syntax perldata Perl data structures ... perldebug Perl debugging perlvar Perl predefined variables ...
And from man POSIX
...
"getpid" Returns the process identifier. Identical to Perl's builtin variable $$, see "$PID" in perlvar.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With