【问题标题】:Perl $$ (double dollar) sign -- what does it dereference?Perl $$(双美元)符号——它取消引用什么?
【发布时间】:2018-02-13 06:29:55
【问题描述】:

我在Perl $$var -- two dollar signs as a sigil?上看到了这个问题,那个双美元符号是用来取消引用的

我有这个 perl 代码

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

从上面的代码中,双美元符号解引用是什么? my $queue = join(":", $ip, $port, $$, $uid);

【问题讨论】:

    标签: perl


    【解决方案1】:

    简单

    就像 和其他POSIX :$$ 是当前进程ID (PID)

    对于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.
    

    注:来自man perl

    Reference Manual
            perlsyn             Perl syntax
            perldata            Perl data structures
            ...
            perldebug           Perl debugging
            perlvar             Perl predefined variables
            ...
    

    来自man POSIX...

       "getpid"
              Returns the process identifier.  Identical to Perl's builtin
              variable $$, see "$PID" in perlvar.
    

    【讨论】:

      猜你喜欢
      • 2015-03-01
      • 2020-01-20
      • 2018-06-19
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      相关资源
      最近更新 更多