Parse:...freebsd(3pm)

๐Ÿ“ฆ
version 0.150 ยท 2 versions
  • 0.150 ยท debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking (latest)
  • 0.14 ยท ubuntu jammy
, in debian bookworm, debian trixie, ubuntu noble, ubuntu resolute, ubuntu stonking

๐Ÿ’– Parse::Netstat::freebsd ๐Ÿ’–

okay so bestie, welcome to the manual page for Parse::Netstat::freebsd, which lives in the User Contributed Perl Documentation section and answers to Parse:...freebsd(3pm) if you're calling it by its man-page name. It's the FreeBSD-flavored parser in the family. Let's get into it ๐Ÿซถ


โœจ NAME โœจ

Parse::Netstat::freebsd โ€” Parse the output of FreeBSD "netstat" command ๐Ÿ’…


๐ŸŒธ VERSION ๐ŸŒธ

This document describes version 0.150 of Parse::Netstat::freebsd (from Perl distribution Parse-Netstat), released on 2022-12-04. โœจ


๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

The way you use it is literally this:

use Parse::Netstat qw(parse_netstat);
my $res = parse_netstat(output=>join("", `netstat -an`), flavor=>"freebsd");

Sample netstat -an output: ๐Ÿ‘‘

Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address          Foreign Address        (state)
tcp4       0      0 192.168.1.33.780       192.168.1.10.2049      CLOSE_WAIT
tcp4       0      0 192.168.1.33.632       192.168.1.10.2049      CLOSED
tcp4       0      0 127.0.0.1.6012         *.*                    LISTEN
tcp6       0      0 ::1.6012               *.*                    LISTEN
tcp4       0     52 192.168.1.33.22        192.168.1.10.41487     ESTABLISHED
tcp4       0      0 127.0.0.1.6011         *.*                    LISTEN
tcp6       0      0 ::1.6011               *.*                    LISTEN
tcp4       0      0 192.168.1.33.22        192.168.1.10.61223     ESTABLISHED
tcp4       0      0 127.0.0.1.6010         *.*                    LISTEN
tcp6       0      0 ::1.6010               *.*                    LISTEN
tcp4       0      0 192.168.1.33.22        192.168.1.10.18499     ESTABLISHED
tcp4       0      0 192.168.1.33.22        192.168.1.10.30712     ESTABLISHED
tcp4       0      0 127.0.0.1.25           *.*                    LISTEN
tcp4       0      0 *.22                   *.*                    LISTEN
tcp6       0      0 *.22                   *.*                    LISTEN
tcp4       0      0 *.4949                 *.*                    LISTEN
tcp6       0      0 *.4949                 *.*                    LISTEN
tcp4       0      0 *.667                  *.*                    LISTEN
tcp6       0      0 *.896                  *.*                    LISTEN
tcp4       0      0 *.879                  *.*                    LISTEN
tcp6       0      0 *.879                  *.*                    LISTEN
tcp4       0      0 *.111                  *.*                    LISTEN
tcp6       0      0 *.111                  *.*                    LISTEN
udp4       0      0 *.682                  *.*
udp6       0      0 *.726                  *.*
udp6       0      0 *.948                  *.*
udp4       0      0 *.*                    *.*
udp4       0      0 *.879                  *.*
udp6       0      0 *.879                  *.*
udp6       0      0 *.*                    *.*
udp4       0      0 *.755                  *.*
udp4       0      0 *.111                  *.*
udp6       0      0 *.932                  *.*
udp6       0      0 *.111                  *.*
udp4       0      0 *.514                  *.*
udp6       0      0 *.514                  *.*
Active UNIX domain sockets
Address  Type   Recv-Q Send-Q    Inode     Conn     Refs  Nextref Addr
fffff80057aa11e0 stream      0      0        0        0        0        0
fffff80057aa12d0 stream      0      0        0        0        0        0
fffff8001b0bc5a0 stream      0      0 fffff80011150938        0        0        0 /tmp/ssh-52dQiqRzC4/agent.35116
fffff8001b0bc780 stream      0      0        0 fffff8001b0bcc30        0        0
fffff8001b0bcc30 stream      0      0        0 fffff8001b0bc780        0        0
fffff80002ad85a0 stream      0      0 fffff80030dfd760        0        0        0 /tmp/ssh-ZPrtis6Qgb/agent.21969
fffff8001b0bc2d0 stream      0      0        0 fffff80057aa10f0        0        0
fffff80057aa10f0 stream      0      0        0 fffff8001b0bc2d0        0        0
fffff80002ad82d0 stream      0      0        0 fffff80002ad84b0        0        0
fffff80002ad84b0 stream      0      0        0 fffff80002ad82d0        0        0
fffff800028b3960 stream      0      0 fffff800354e3588        0        0        0 /var/run/dbus/system_bus_socket
fffff80002ad8a50 stream      0      0        0 fffff80002ad8c30        0        0
fffff80002ad8c30 stream      0      0        0 fffff80002ad8a50        0        0
fffff80002ad91e0 stream      0      0 fffff80002f5b1d8        0        0        0 /tmp/ssh-EXvnWwxbk4/agent.750
fffff80002ad93c0 stream      0      0        0 fffff80002ad90f0        0        0
fffff80002ad90f0 stream      0      0        0 fffff80002ad93c0        0        0
fffff80002ad9780 stream      0      0 fffff800029db000        0        0        0 /var/run/rpcbind.sock
fffff80002ad9b40 stream      0      0 fffff800029a4000        0        0        0 /var/run/devd.pipe
fffff80002ad80f0 dgram       0      0        0 fffff80002ad9960        0 fffff80002ad94b0
fffff80002ad9000 dgram       0      0        0 fffff80002ad9870        0 fffff80002ad92d0
fffff80002ad94b0 dgram       0      0        0 fffff80002ad9960        0        0
fffff80002ad92d0 dgram       0      0        0 fffff80002ad9870        0 fffff80002ad9690
fffff80002ad9690 dgram       0      0        0 fffff80002ad9870        0 fffff80002ad95a0
fffff80002ad95a0 dgram       0      0        0 fffff80002ad9870        0        0
fffff80002ad9870 dgram       0      0 fffff80002b3e938        0 fffff80002ad9000        0 /var/run/logpriv
fffff80002ad9960 dgram       0      0 fffff80002b3eb10        0 fffff80002ad80f0        0 /var/run/log
fffff80002ad9a50 seqpac      0      0 fffff80002947ce8        0        0        0 /var/run/devd.seqpacket.pipe

Sample result:

        [
          200,
          "OK",
          {
            active_conns => [
              {
                foreign_host => "192.168.1.10",
                foreign_port => 2049,
                local_host => "192.168.1.33",
                local_port => 780,
                proto => "tcp4",
                recvq => 0,
                sendq => 0,
                state => "CLOSE_WAIT",
              },
              {
                foreign_host => "192.168.1.10",
                foreign_port => 2049,
                local_host => "192.168.1.33",
                local_port => 632,
                proto => "tcp4",
                recvq => 0,
                sendq => 0,
                state => "CLOSED",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "127.0.0.1",
                local_port => 6012,
                proto => "tcp4",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "::1",
                local_port => 6012,
                proto => "tcp6",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "192.168.1.10",
                foreign_port => 41487,
                local_host => "192.168.1.33",
                local_port => 22,
                proto => "tcp4",
                recvq => 0,
                sendq => 52,
                state => "ESTABLISHED",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "127.0.0.1",
                local_port => 6011,
                proto => "tcp4",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "::1",
                local_port => 6011,
                proto => "tcp6",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "192.168.1.10",
                foreign_port => 61223,
                local_host => "192.168.1.33",
                local_port => 22,
                proto => "tcp4",
                recvq => 0,
                sendq => 0,
                state => "ESTABLISHED",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "127.0.0.1",
                local_port => 6010,
                proto => "tcp4",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "::1",
                local_port => 6010,
                proto => "tcp6",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "192.168.1.10",
                foreign_port => 18499,
                local_host => "192.168.1.33",
                local_port => 22,
                proto => "tcp4",
                recvq => 0,
                sendq => 0,
                state => "ESTABLISHED",
              },
              {
                foreign_host => "192.168.1.10",
                foreign_port => 30712,
                local_host => "192.168.1.33",
                local_port => 22,
                proto => "tcp4",
                recvq => 0,
                sendq => 0,
                state => "ESTABLISHED",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "127.0.0.1",
                local_port => 25,
                proto => "tcp4",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 22,
                proto => "tcp4",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 22,
                proto => "tcp6",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 4949,
                proto => "tcp4",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 4949,
                proto => "tcp6",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 667,
                proto => "tcp4",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 896,
                proto => "tcp6",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 879,
                proto => "tcp4",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 879,
                proto => "tcp6",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 111,
                proto => "tcp4",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 111,
                proto => "tcp6",
                recvq => 0,
                sendq => 0,
                state => "LISTEN",
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 682,
                proto => "udp4",
                recvq => 0,
                sendq => 0,
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 726,
                proto => "udp6",
                recvq => 0,
                sendq => 0,
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 948,
                proto => "udp6",
                recvq => 0,
                sendq => 0,
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => "*",
                proto => "udp4",
                recvq => 0,
                sendq => 0,
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 879,
                proto => "udp4",
                recvq => 0,
                sendq => 0,
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 879,
                proto => "udp6",
                recvq => 0,
                sendq => 0,
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => "*",
                proto => "udp6",
                recvq => 0,
                sendq => 0,
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 755,
                proto => "udp4",
                recvq => 0,
                sendq => 0,
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 111,
                proto => "udp4",
                recvq => 0,
                sendq => 0,
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 932,
                proto => "udp6",
                recvq => 0,
                sendq => 0,
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 111,
                proto => "udp6",
                recvq => 0,
                sendq => 0,
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 514,
                proto => "udp4",
                recvq => 0,
                sendq => 0,
              },
              {
                foreign_host => "*",
                foreign_port => "*",
                local_host => "*",
                local_port => 514,
                proto => "udp6",
                recvq => 0,
                sendq => 0,
              },
              {},
              {},
              {
                address => "fffff80057aa11e0",
                conn    => 0,
                inode   => 0,
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                address => "fffff80057aa12d0",
                conn    => 0,
                inode   => 0,
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                addr    => "/tmp/ssh-52dQiqRzC4/agent.35116",
                address => "fffff8001b0bc5a0",
                conn    => 0,
                inode   => "fffff80011150938",
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                address => "fffff8001b0bc780",
                conn    => "fffff8001b0bcc30",
                inode   => 0,
                nextref => 0,
                proto   => "unix",

okay so bestie, that right there? That's what a parsed connection table looks like when it falls out the other end ๐Ÿ’… โ€” and ngl it's kind of a lot, so let's vibe check what we're actually looking at ๐Ÿ”โœจ

The whole thing is one big array ref, and the first two elements are 200 and "OK" โ€” a status code and a status string, sitting right up top like the little header of the whole operation ๐Ÿ‘‘ Then the third element is a hashref, and inside that lives active_conns, which is where all the actual tea is โ˜•

  • Every TCP entry carries foreign_host, foreign_port, local_host, local_port, proto, recvq, sendq, and a state โ€” so you get the full picture of who's talking to whom and how it's going ๐Ÿซถ
  • The states you can spot in there: "CLOSE_WAIT", "CLOSED", "LISTEN", and "ESTABLISHED" โ€” iconic lineup honestly ๐Ÿ˜Œ
  • The UDP entries keep foreign_host, foreign_port, local_host, local_port, proto, recvq and sendq โ€” but no state, because UDP said "labels are a construct" ๐Ÿ’€
  • The proto values you'll see are "tcp4", "tcp6", "udp4", "udp6", and "unix" โ€” full spectrum representation fr fr ๐ŸŒˆ
  • The wildcards show up as "*" for both hosts and ports, which is how you know something is just sitting there listening with main character energy ๐Ÿ‘€
  • The unix socket entries switch up the whole field list โ€” they're working with address, conn, inode, nextref, proto, recvq, refs, sendq, and type instead. Note that inode shows up as a plain 0 in some of them and as a string like "fffff80011150938" in another ๐Ÿ™ˆ
  • One of the unix entries is extra special and brings an addr key too, with a path: "/tmp/ssh-52dQiqRzC4/agent.35116" โ€” she's got a whole name for herself, we stan ๐ŸŽ€

and yes, there are a couple of straight-up empty hashrefs {} in the middle of the list just existing, and the dump keeps rolling past "fffff8001b0bc780" โ€” so hold that thought, we're not done yet ๐Ÿฆ‹


              {
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                address => "fffff8001b0bcc30",
                conn    => "fffff8001b0bc780",
                inode   => 0,
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                addr    => "/tmp/ssh-ZPrtis6Qgb/agent.21969",
                address => "fffff80002ad85a0",
                conn    => 0,
                inode   => "fffff80030dfd760",
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                address => "fffff8001b0bc2d0",
                conn    => "fffff80057aa10f0",
                inode   => 0,
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                address => "fffff80057aa10f0",
                conn    => "fffff8001b0bc2d0",
                inode   => 0,
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                address => "fffff80002ad82d0",
                conn    => "fffff80002ad84b0",
                inode   => 0,
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                address => "fffff80002ad84b0",
                conn    => "fffff80002ad82d0",
                inode   => 0,
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                addr    => "/var/run/dbus/system_bus_socket",
                address => "fffff800028b3960",
                conn    => 0,
                inode   => "fffff800354e3588",
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                address => "fffff80002ad8a50",
                conn    => "fffff80002ad8c30",
                inode   => 0,
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                address => "fffff80002ad8c30",
                conn    => "fffff80002ad8a50",
                inode   => 0,
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                addr    => "/tmp/ssh-EXvnWwxbk4/agent.750",
                address => "fffff80002ad91e0",
                conn    => 0,
                inode   => "fffff80002f5b1d8",
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                address => "fffff80002ad93c0",
                conn    => "fffff80002ad90f0",
                inode   => 0,
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                address => "fffff80002ad90f0",
                conn    => "fffff80002ad93c0",
                inode   => 0,
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                addr    => "/var/run/rpcbind.sock",
                address => "fffff80002ad9780",
                conn    => 0,
                inode   => "fffff800029db000",
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                addr    => "/var/run/devd.pipe",
                address => "fffff80002ad9b40",
                conn    => 0,
                inode   => "fffff800029a4000",
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "stream",
              },
              {
                address => "fffff80002ad80f0",
                conn    => "fffff80002ad9960",
                inode   => 0,
                nextref => "fffff80002ad94b0",
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "dgram",
              },
              {
                address => "fffff80002ad9000",
                conn    => "fffff80002ad9870",
                inode   => 0,
                nextref => "fffff80002ad92d0",
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "dgram",
              },
              {
                address => "fffff80002ad94b0",
                conn    => "fffff80002ad9960",
                inode   => 0,
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "dgram",
              },
              {
                address => "fffff80002ad92d0",
                conn    => "fffff80002ad9870",
                inode   => 0,
                nextref => "fffff80002ad9690",
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "dgram",
              },
              {
                address => "fffff80002ad9690",
                conn    => "fffff80002ad9870",
                inode   => 0,
                nextref => "fffff80002ad95a0",
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "dgram",
              },
              {
                address => "fffff80002ad95a0",
                conn    => "fffff80002ad9870",
                inode   => 0,
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "dgram",
              },
              {
                addr    => "/var/run/logpriv",
                address => "fffff80002ad9870",
                conn    => 0,
                inode   => "fffff80002b3e938",
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => "fffff80002ad9000",
                sendq   => 0,
                type    => "dgram",
              },
              {
                addr    => "/var/run/log",
                address => "fffff80002ad9960",
                conn    => 0,
                inode   => "fffff80002b3eb10",
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => "fffff80002ad80f0",
                sendq   => 0,
                type    => "dgram",
              },
              {
                addr    => "/var/run/devd.seqpacket.pipe",
                address => "fffff80002ad9a50",
                conn    => 0,
                inode   => "fffff80002947ce8",
                nextref => 0,
                proto   => "unix",
                recvq   => 0,
                refs    => 0,
                sendq   => 0,
                type    => "seqpac",
              },
            ],
          },
        ]

๐Ÿ’… FUNCTIONS ๐Ÿ’…

๐ŸŒธ parse_netstat ๐ŸŒธ

Usage, bestie:

parse_netstat(%args) -> [$status_code, $reason, $payload, \%result_meta]

Okay so this one parses the output of the FreeBSD netstat command. Periodt.

Here's the tea on how netstat can get called: it can be called with -n (which shows raw IP addresses and port numbers instead of hostnames or port names) or without it. And it can be called with the -a option (which shows all listening and non-listening sockets) or without it. Either way, we got you. ๐Ÿซถ

Tested with FreeBSD 10.1's netstat. iykyk

Heads up: this function is not exported by default, but it is exportable. ๐Ÿ’ซ

โœจ Arguments โœจ ('*' denotes required arguments):

  • output* => str โ€” the output of the netstat command. Yeah. You gotta hand it the actual text, it's not gonna go get it for you. ๐Ÿ“‹
  • tcp => bool (default: 1) โ€” whether to parse TCP (and TCP6) connections. Default is yes, on by default, we love that for us. ๐Ÿงฆ
  • udp => bool (default: 1) โ€” whether to parse UDP (and UDP6) connections. Also default 1. ๐Ÿ‘Ÿ
  • unix => bool (default: 1) โ€” whether to parse Unix socket connections. Default 1 again. Consistent queen. ๐Ÿ”Œ

๐Ÿ’– Returns ๐Ÿ’–

It returns an enveloped result โ€” and yes it's an array, she's an array. ๐Ÿ“ฆ

  1. First element ($status_code) is an integer holding an HTTP-like status code. So 200 means OK, 4xx is a caller error, and 5xx is a function error. Vibe check on the number fr.
  2. Second element ($reason) is a string with the error message โ€” or something like "OK" when the status is 200. ๐Ÿ’ฌ
  3. Third element ($payload) is the actual result, but usually it's not present when the enveloped result is an error response (like when $status_code is not 2xx). ๐Ÿ™ˆ
  4. Fourth element (%result_meta) is called result metadata and it's optional โ€” a hash containing extra information, much like how HTTP response headers give you additional metadata. It's giving headers but make it Perl. ๐ŸŽ€

Return value: (any)


๐ŸŒˆ HOMEPAGE ๐ŸŒˆ

Please visit the project's homepage at <https://metacpan.org/release/Parse-Netstat>. Go on, click it, it's right there. โœจ

๐Ÿงš SOURCE ๐Ÿงš

Source repository is at <https://github.com/perlancar/perl-Parse-Netstat>. Clone it, fork it, live your truth. ๐Ÿ’ป

๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

perlancar <perlancar@cpan.org> โ€” the literal icon who wrote all of this ๐Ÿ’œ

๐Ÿซถ CONTRIBUTING ๐Ÿซถ

To contribute, you can send patches by email/via RT, or send pull requests on GitHub. Pick your fighter, both are valid. ๐Ÿฆ‹

Most of the time, you don't need to build the distribution yourself. You can simply modify the code, then test via:

% prove -l

If you want to build the distribution (e.g. to try to install it locally on your system), you can install Dist::Zilla, Dist::Zilla::PluginBundle::Author::PERLANCAR, Pod::Weaver::PluginBundle::Author::PERLANCAR, and sometimes one or two other Dist::Zilla- and/or Pod::Weaver plugins. Any additional steps required beyond that are considered a bug and can be reported to me. not a bug bestie, a BUG bug ๐Ÿ˜ญ

This software is copyright (c) 2022, 2017, 2015, 2014, 2012, 2011 by perlancar <perlancar@cpan.org>. ๐Ÿ—“๏ธ

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. Free as in go off, it's yours. ๐Ÿ’š

๐Ÿ› BUGS ๐Ÿ›

Please report any bugs or feature requests on the bugtracker website <https://rt.cpan.org/Public/Dist/Display.html?Name=Parse-Netstat>. ๐Ÿ“ฎ

When submitting a bug or request, please include a test-file or a patch to an existing test-file that illustrates the bug or desired feature. Receipts or it didn't happen. ๐Ÿงพ


And that's the whole page, bestie โ€” you made it to the end, main character energy fr fr ๐Ÿ’…โœจ This one was rendered from perl v5.36.0 and dated 2023-01-15, so yeah, it's a lil vintage but she still slays. Go parse some sockets, you got this. ๐ŸŽ€๐Ÿฆ‹๐Ÿ’–

๐Ÿ“ฆ where this page comes from