| File | /usr/local/lib/perl5/5.10.1/darwin-2level/Socket.pm |
| Statements Executed | 41 |
| Statement Execution Time | 1.25ms |
| Calls | P | F | Exclusive Time |
Inclusive Time |
Subroutine |
|---|---|---|---|---|---|
| 2 | 1 | 2 | 82.1ms | 82.1ms | Socket::inet_aton (xsub) |
| 6 | 2 | 1 | 49µs | 62µs | Socket::sockaddr_in |
| 3 | 1 | 2 | 23µs | 23µs | Socket::inet_ntoa (xsub) |
| 1 | 1 | 1 | 18µs | 63µs | Socket::BEGIN@178 |
| 2 | 1 | 2 | 13µs | 13µs | Socket::pack_sockaddr_in (xsub) |
| 6 | 1 | 2 | 13µs | 13µs | Socket::unpack_sockaddr_in (xsub) |
| 1 | 1 | 1 | 13µs | 94µs | Socket::BEGIN@179 |
| 1 | 1 | 1 | 5µs | 5µs | Socket::BEGIN@365 |
| 1 | 1 | 1 | 4µs | 4µs | Socket::BEGIN@182 |
| 0 | 0 | 0 | 0s | 0s | Socket::AUTOLOAD |
| 0 | 0 | 0 | 0s | 0s | Socket::__ANON__[:408] |
| 0 | 0 | 0 | 0s | 0s | Socket::sockaddr_un |
| Line | State ments |
Time on line |
Calls | Time in subs |
Code |
|---|---|---|---|---|---|
| 1 | package Socket; | ||||
| 2 | |||||
| 3 | 1 | 600ns | our($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS); | ||
| 4 | 1 | 700ns | $VERSION = "1.82"; | ||
| 5 | |||||
| 6 | =head1 NAME | ||||
| 7 | |||||
| 8 | Socket, sockaddr_in, sockaddr_un, inet_aton, inet_ntoa - load the C socket.h defines and structure manipulators | ||||
| 9 | |||||
| 10 | =head1 SYNOPSIS | ||||
| 11 | |||||
| 12 | use Socket; | ||||
| 13 | |||||
| 14 | $proto = getprotobyname('udp'); | ||||
| 15 | socket(Socket_Handle, PF_INET, SOCK_DGRAM, $proto); | ||||
| 16 | $iaddr = gethostbyname('hishost.com'); | ||||
| 17 | $port = getservbyname('time', 'udp'); | ||||
| 18 | $sin = sockaddr_in($port, $iaddr); | ||||
| 19 | send(Socket_Handle, 0, 0, $sin); | ||||
| 20 | |||||
| 21 | $proto = getprotobyname('tcp'); | ||||
| 22 | socket(Socket_Handle, PF_INET, SOCK_STREAM, $proto); | ||||
| 23 | $port = getservbyname('smtp', 'tcp'); | ||||
| 24 | $sin = sockaddr_in($port,inet_aton("127.1")); | ||||
| 25 | $sin = sockaddr_in(7,inet_aton("localhost")); | ||||
| 26 | $sin = sockaddr_in(7,INADDR_LOOPBACK); | ||||
| 27 | connect(Socket_Handle,$sin); | ||||
| 28 | |||||
| 29 | ($port, $iaddr) = sockaddr_in(getpeername(Socket_Handle)); | ||||
| 30 | $peer_host = gethostbyaddr($iaddr, AF_INET); | ||||
| 31 | $peer_addr = inet_ntoa($iaddr); | ||||
| 32 | |||||
| 33 | $proto = getprotobyname('tcp'); | ||||
| 34 | socket(Socket_Handle, PF_UNIX, SOCK_STREAM, $proto); | ||||
| 35 | unlink('/var/run/usock'); | ||||
| 36 | $sun = sockaddr_un('/var/run/usock'); | ||||
| 37 | connect(Socket_Handle,$sun); | ||||
| 38 | |||||
| 39 | =head1 DESCRIPTION | ||||
| 40 | |||||
| 41 | This module is just a translation of the C F<socket.h> file. | ||||
| 42 | Unlike the old mechanism of requiring a translated F<socket.ph> | ||||
| 43 | file, this uses the B<h2xs> program (see the Perl source distribution) | ||||
| 44 | and your native C compiler. This means that it has a | ||||
| 45 | far more likely chance of getting the numbers right. This includes | ||||
| 46 | all of the commonly used pound-defines like AF_INET, SOCK_STREAM, etc. | ||||
| 47 | |||||
| 48 | Also, some common socket "newline" constants are provided: the | ||||
| 49 | constants C<CR>, C<LF>, and C<CRLF>, as well as C<$CR>, C<$LF>, and | ||||
| 50 | C<$CRLF>, which map to C<\015>, C<\012>, and C<\015\012>. If you do | ||||
| 51 | not want to use the literal characters in your programs, then use | ||||
| 52 | the constants provided here. They are not exported by default, but can | ||||
| 53 | be imported individually, and with the C<:crlf> export tag: | ||||
| 54 | |||||
| 55 | use Socket qw(:DEFAULT :crlf); | ||||
| 56 | |||||
| 57 | In addition, some structure manipulation functions are available: | ||||
| 58 | |||||
| 59 | =over 4 | ||||
| 60 | |||||
| 61 | =item inet_aton HOSTNAME | ||||
| 62 | |||||
| 63 | Takes a string giving the name of a host, and translates that to an | ||||
| 64 | opaque string (if programming in C, struct in_addr). Takes arguments | ||||
| 65 | of both the 'rtfm.mit.edu' type and '18.181.0.24'. If the host name | ||||
| 66 | cannot be resolved, returns undef. For multi-homed hosts (hosts with | ||||
| 67 | more than one address), the first address found is returned. | ||||
| 68 | |||||
| 69 | For portability do not assume that the result of inet_aton() is 32 | ||||
| 70 | bits wide, in other words, that it would contain only the IPv4 address | ||||
| 71 | in network order. | ||||
| 72 | |||||
| 73 | =item inet_ntoa IP_ADDRESS | ||||
| 74 | |||||
| 75 | Takes a string (an opaque string as returned by inet_aton(), | ||||
| 76 | or a v-string representing the four octets of the IPv4 address in | ||||
| 77 | network order) and translates it into a string of the form 'd.d.d.d' | ||||
| 78 | where the 'd's are numbers less than 256 (the normal human-readable | ||||
| 79 | four dotted number notation for Internet addresses). | ||||
| 80 | |||||
| 81 | =item INADDR_ANY | ||||
| 82 | |||||
| 83 | Note: does not return a number, but a packed string. | ||||
| 84 | |||||
| 85 | Returns the 4-byte wildcard ip address which specifies any | ||||
| 86 | of the hosts ip addresses. (A particular machine can have | ||||
| 87 | more than one ip address, each address corresponding to | ||||
| 88 | a particular network interface. This wildcard address | ||||
| 89 | allows you to bind to all of them simultaneously.) | ||||
| 90 | Normally equivalent to inet_aton('0.0.0.0'). | ||||
| 91 | |||||
| 92 | =item INADDR_BROADCAST | ||||
| 93 | |||||
| 94 | Note: does not return a number, but a packed string. | ||||
| 95 | |||||
| 96 | Returns the 4-byte 'this-lan' ip broadcast address. | ||||
| 97 | This can be useful for some protocols to solicit information | ||||
| 98 | from all servers on the same LAN cable. | ||||
| 99 | Normally equivalent to inet_aton('255.255.255.255'). | ||||
| 100 | |||||
| 101 | =item INADDR_LOOPBACK | ||||
| 102 | |||||
| 103 | Note - does not return a number. | ||||
| 104 | |||||
| 105 | Returns the 4-byte loopback address. Normally equivalent | ||||
| 106 | to inet_aton('localhost'). | ||||
| 107 | |||||
| 108 | =item INADDR_NONE | ||||
| 109 | |||||
| 110 | Note - does not return a number. | ||||
| 111 | |||||
| 112 | Returns the 4-byte 'invalid' ip address. Normally equivalent | ||||
| 113 | to inet_aton('255.255.255.255'). | ||||
| 114 | |||||
| 115 | =item sockaddr_family SOCKADDR | ||||
| 116 | |||||
| 117 | Takes a sockaddr structure (as returned by pack_sockaddr_in(), | ||||
| 118 | pack_sockaddr_un() or the perl builtin functions getsockname() and | ||||
| 119 | getpeername()) and returns the address family tag. It will match the | ||||
| 120 | constant AF_INET for a sockaddr_in and AF_UNIX for a sockaddr_un. It | ||||
| 121 | can be used to figure out what unpacker to use for a sockaddr of | ||||
| 122 | unknown type. | ||||
| 123 | |||||
| 124 | =item sockaddr_in PORT, ADDRESS | ||||
| 125 | |||||
| 126 | =item sockaddr_in SOCKADDR_IN | ||||
| 127 | |||||
| 128 | In a list context, unpacks its SOCKADDR_IN argument and returns an array | ||||
| 129 | consisting of (PORT, ADDRESS). In a scalar context, packs its (PORT, | ||||
| 130 | ADDRESS) arguments as a SOCKADDR_IN and returns it. If this is confusing, | ||||
| 131 | use pack_sockaddr_in() and unpack_sockaddr_in() explicitly. | ||||
| 132 | |||||
| 133 | =item pack_sockaddr_in PORT, IP_ADDRESS | ||||
| 134 | |||||
| 135 | Takes two arguments, a port number and an opaque string, IP_ADDRESS | ||||
| 136 | (as returned by inet_aton(), or a v-string). Returns the sockaddr_in | ||||
| 137 | structure with those arguments packed in with AF_INET filled in. For | ||||
| 138 | Internet domain sockets, this structure is normally what you need for | ||||
| 139 | the arguments in bind(), connect(), and send(), and is also returned | ||||
| 140 | by getpeername(), getsockname() and recv(). | ||||
| 141 | |||||
| 142 | =item unpack_sockaddr_in SOCKADDR_IN | ||||
| 143 | |||||
| 144 | Takes a sockaddr_in structure (as returned by pack_sockaddr_in()) and | ||||
| 145 | returns an array of two elements: the port and an opaque string | ||||
| 146 | representing the IP address (you can use inet_ntoa() to convert the | ||||
| 147 | address to the four-dotted numeric format). Will croak if the | ||||
| 148 | structure does not have AF_INET in the right place. | ||||
| 149 | |||||
| 150 | =item sockaddr_un PATHNAME | ||||
| 151 | |||||
| 152 | =item sockaddr_un SOCKADDR_UN | ||||
| 153 | |||||
| 154 | In a list context, unpacks its SOCKADDR_UN argument and returns an array | ||||
| 155 | consisting of (PATHNAME). In a scalar context, packs its PATHNAME | ||||
| 156 | arguments as a SOCKADDR_UN and returns it. If this is confusing, use | ||||
| 157 | pack_sockaddr_un() and unpack_sockaddr_un() explicitly. | ||||
| 158 | These are only supported if your system has E<lt>F<sys/un.h>E<gt>. | ||||
| 159 | |||||
| 160 | =item pack_sockaddr_un PATH | ||||
| 161 | |||||
| 162 | Takes one argument, a pathname. Returns the sockaddr_un structure with | ||||
| 163 | that path packed in with AF_UNIX filled in. For unix domain sockets, this | ||||
| 164 | structure is normally what you need for the arguments in bind(), | ||||
| 165 | connect(), and send(), and is also returned by getpeername(), | ||||
| 166 | getsockname() and recv(). | ||||
| 167 | |||||
| 168 | =item unpack_sockaddr_un SOCKADDR_UN | ||||
| 169 | |||||
| 170 | Takes a sockaddr_un structure (as returned by pack_sockaddr_un()) | ||||
| 171 | and returns the pathname. Will croak if the structure does not | ||||
| 172 | have AF_UNIX in the right place. | ||||
| 173 | |||||
| 174 | =back | ||||
| 175 | |||||
| 176 | =cut | ||||
| 177 | |||||
| 178 | 3 | 28µs | 2 | 108µs | # spent 63µs (18+45) within Socket::BEGIN@178 which was called
# once (18µs+45µs) by IO::Socket::BEGIN@12 at line 178 # spent 63µs making 1 call to Socket::BEGIN@178
# spent 45µs making 1 call to Exporter::import |
| 179 | 3 | 32µs | 2 | 176µs | # spent 94µs (13+82) within Socket::BEGIN@179 which was called
# once (13µs+82µs) by IO::Socket::BEGIN@12 at line 179 # spent 94µs making 1 call to Socket::BEGIN@179
# spent 82µs making 1 call to warnings::register::import |
| 180 | |||||
| 181 | 1 | 600ns | require Exporter; | ||
| 182 | 3 | 248µs | 1 | 4µs | # spent 4µs within Socket::BEGIN@182 which was called
# once (4µs+0s) by IO::Socket::BEGIN@12 at line 182 # spent 4µs making 1 call to Socket::BEGIN@182 |
| 183 | 1 | 8µs | @ISA = qw(Exporter); | ||
| 184 | 1 | 38µs | @EXPORT = qw( | ||
| 185 | inet_aton inet_ntoa | ||||
| 186 | sockaddr_family | ||||
| 187 | pack_sockaddr_in unpack_sockaddr_in | ||||
| 188 | pack_sockaddr_un unpack_sockaddr_un | ||||
| 189 | sockaddr_in sockaddr_un | ||||
| 190 | INADDR_ANY INADDR_BROADCAST INADDR_LOOPBACK INADDR_NONE | ||||
| 191 | AF_802 | ||||
| 192 | AF_AAL | ||||
| 193 | AF_APPLETALK | ||||
| 194 | AF_CCITT | ||||
| 195 | AF_CHAOS | ||||
| 196 | AF_CTF | ||||
| 197 | AF_DATAKIT | ||||
| 198 | AF_DECnet | ||||
| 199 | AF_DLI | ||||
| 200 | AF_ECMA | ||||
| 201 | AF_GOSIP | ||||
| 202 | AF_HYLINK | ||||
| 203 | AF_IMPLINK | ||||
| 204 | AF_INET | ||||
| 205 | AF_INET6 | ||||
| 206 | AF_ISO | ||||
| 207 | AF_KEY | ||||
| 208 | AF_LAST | ||||
| 209 | AF_LAT | ||||
| 210 | AF_LINK | ||||
| 211 | AF_MAX | ||||
| 212 | AF_NBS | ||||
| 213 | AF_NIT | ||||
| 214 | AF_NS | ||||
| 215 | AF_OSI | ||||
| 216 | AF_OSINET | ||||
| 217 | AF_PUP | ||||
| 218 | AF_ROUTE | ||||
| 219 | AF_SNA | ||||
| 220 | AF_UNIX | ||||
| 221 | AF_UNSPEC | ||||
| 222 | AF_USER | ||||
| 223 | AF_WAN | ||||
| 224 | AF_X25 | ||||
| 225 | IOV_MAX | ||||
| 226 | IP_OPTIONS | ||||
| 227 | IP_HDRINCL | ||||
| 228 | IP_TOS | ||||
| 229 | IP_TTL | ||||
| 230 | IP_RECVOPTS | ||||
| 231 | IP_RECVRETOPTS | ||||
| 232 | IP_RETOPTS | ||||
| 233 | MSG_BCAST | ||||
| 234 | MSG_BTAG | ||||
| 235 | MSG_CTLFLAGS | ||||
| 236 | MSG_CTLIGNORE | ||||
| 237 | MSG_CTRUNC | ||||
| 238 | MSG_DONTROUTE | ||||
| 239 | MSG_DONTWAIT | ||||
| 240 | MSG_EOF | ||||
| 241 | MSG_EOR | ||||
| 242 | MSG_ERRQUEUE | ||||
| 243 | MSG_ETAG | ||||
| 244 | MSG_FIN | ||||
| 245 | MSG_MAXIOVLEN | ||||
| 246 | MSG_MCAST | ||||
| 247 | MSG_NOSIGNAL | ||||
| 248 | MSG_OOB | ||||
| 249 | MSG_PEEK | ||||
| 250 | MSG_PROXY | ||||
| 251 | MSG_RST | ||||
| 252 | MSG_SYN | ||||
| 253 | MSG_TRUNC | ||||
| 254 | MSG_URG | ||||
| 255 | MSG_WAITALL | ||||
| 256 | MSG_WIRE | ||||
| 257 | PF_802 | ||||
| 258 | PF_AAL | ||||
| 259 | PF_APPLETALK | ||||
| 260 | PF_CCITT | ||||
| 261 | PF_CHAOS | ||||
| 262 | PF_CTF | ||||
| 263 | PF_DATAKIT | ||||
| 264 | PF_DECnet | ||||
| 265 | PF_DLI | ||||
| 266 | PF_ECMA | ||||
| 267 | PF_GOSIP | ||||
| 268 | PF_HYLINK | ||||
| 269 | PF_IMPLINK | ||||
| 270 | PF_INET | ||||
| 271 | PF_INET6 | ||||
| 272 | PF_ISO | ||||
| 273 | PF_KEY | ||||
| 274 | PF_LAST | ||||
| 275 | PF_LAT | ||||
| 276 | PF_LINK | ||||
| 277 | PF_MAX | ||||
| 278 | PF_NBS | ||||
| 279 | PF_NIT | ||||
| 280 | PF_NS | ||||
| 281 | PF_OSI | ||||
| 282 | PF_OSINET | ||||
| 283 | PF_PUP | ||||
| 284 | PF_ROUTE | ||||
| 285 | PF_SNA | ||||
| 286 | PF_UNIX | ||||
| 287 | PF_UNSPEC | ||||
| 288 | PF_USER | ||||
| 289 | PF_WAN | ||||
| 290 | PF_X25 | ||||
| 291 | SCM_CONNECT | ||||
| 292 | SCM_CREDENTIALS | ||||
| 293 | SCM_CREDS | ||||
| 294 | SCM_RIGHTS | ||||
| 295 | SCM_TIMESTAMP | ||||
| 296 | SHUT_RD | ||||
| 297 | SHUT_RDWR | ||||
| 298 | SHUT_WR | ||||
| 299 | SOCK_DGRAM | ||||
| 300 | SOCK_RAW | ||||
| 301 | SOCK_RDM | ||||
| 302 | SOCK_SEQPACKET | ||||
| 303 | SOCK_STREAM | ||||
| 304 | SOL_SOCKET | ||||
| 305 | SOMAXCONN | ||||
| 306 | SO_ACCEPTCONN | ||||
| 307 | SO_ATTACH_FILTER | ||||
| 308 | SO_BACKLOG | ||||
| 309 | SO_BROADCAST | ||||
| 310 | SO_CHAMELEON | ||||
| 311 | SO_DEBUG | ||||
| 312 | SO_DETACH_FILTER | ||||
| 313 | SO_DGRAM_ERRIND | ||||
| 314 | SO_DONTLINGER | ||||
| 315 | SO_DONTROUTE | ||||
| 316 | SO_ERROR | ||||
| 317 | SO_FAMILY | ||||
| 318 | SO_KEEPALIVE | ||||
| 319 | SO_LINGER | ||||
| 320 | SO_OOBINLINE | ||||
| 321 | SO_PASSCRED | ||||
| 322 | SO_PASSIFNAME | ||||
| 323 | SO_PEERCRED | ||||
| 324 | SO_PROTOCOL | ||||
| 325 | SO_PROTOTYPE | ||||
| 326 | SO_RCVBUF | ||||
| 327 | SO_RCVLOWAT | ||||
| 328 | SO_RCVTIMEO | ||||
| 329 | SO_REUSEADDR | ||||
| 330 | SO_REUSEPORT | ||||
| 331 | SO_SECURITY_AUTHENTICATION | ||||
| 332 | SO_SECURITY_ENCRYPTION_NETWORK | ||||
| 333 | SO_SECURITY_ENCRYPTION_TRANSPORT | ||||
| 334 | SO_SNDBUF | ||||
| 335 | SO_SNDLOWAT | ||||
| 336 | SO_SNDTIMEO | ||||
| 337 | SO_STATE | ||||
| 338 | SO_TYPE | ||||
| 339 | SO_USELOOPBACK | ||||
| 340 | SO_XOPEN | ||||
| 341 | SO_XSE | ||||
| 342 | UIO_MAXIOV | ||||
| 343 | ); | ||||
| 344 | |||||
| 345 | 1 | 3µs | @EXPORT_OK = qw(CR LF CRLF $CR $LF $CRLF | ||
| 346 | |||||
| 347 | IPPROTO_IP | ||||
| 348 | IPPROTO_IPV6 | ||||
| 349 | IPPROTO_RAW | ||||
| 350 | IPPROTO_ICMP | ||||
| 351 | IPPROTO_TCP | ||||
| 352 | IPPROTO_UDP | ||||
| 353 | |||||
| 354 | TCP_KEEPALIVE | ||||
| 355 | TCP_MAXRT | ||||
| 356 | TCP_MAXSEG | ||||
| 357 | TCP_NODELAY | ||||
| 358 | TCP_STDURG); | ||||
| 359 | |||||
| 360 | 1 | 39µs | %EXPORT_TAGS = ( | ||
| 361 | crlf => [qw(CR LF CRLF $CR $LF $CRLF)], | ||||
| 362 | all => [@EXPORT, @EXPORT_OK], | ||||
| 363 | ); | ||||
| 364 | |||||
| 365 | 1 | 5µs | # spent 5µs within Socket::BEGIN@365 which was called
# once (5µs+0s) by IO::Socket::BEGIN@12 at line 369 | ||
| 366 | sub CR () {"\015"} | ||||
| 367 | sub LF () {"\012"} | ||||
| 368 | sub CRLF () {"\015\012"} | ||||
| 369 | 1 | 293µs | 1 | 5µs | } # spent 5µs making 1 call to Socket::BEGIN@365 |
| 370 | |||||
| 371 | 1 | 400ns | *CR = \CR(); | ||
| 372 | 1 | 200ns | *LF = \LF(); | ||
| 373 | 1 | 100ns | *CRLF = \CRLF(); | ||
| 374 | |||||
| 375 | # spent 62µs (49+13) within Socket::sockaddr_in which was called 6 times, avg 10µs/call:
# 3 times (34µs+10µs) by IO::Socket::INET::peeraddr at line 292 of IO/Socket/INET.pm, avg 14µs/call
# 3 times (15µs+4µs) by IO::Socket::INET::peerport at line 299 of IO/Socket/INET.pm, avg 6µs/call | ||||
| 376 | 6 | 31µs | if (@_ == 6 && !wantarray) { # perl5.001m compat; use this && die | ||
| 377 | my($af, $port, @quad) = @_; | ||||
| 378 | warnings::warn "6-ARG sockaddr_in call is deprecated" | ||||
| 379 | if warnings::enabled(); | ||||
| 380 | pack_sockaddr_in($port, inet_aton(join('.', @quad))); | ||||
| 381 | } elsif (wantarray) { | ||||
| 382 | 6 | 2µs | croak "usage: (port,iaddr) = sockaddr_in(sin_sv)" unless @_ == 1; | ||
| 383 | 6 | 37µs | 6 | 13µs | unpack_sockaddr_in(@_); # spent 13µs making 6 calls to Socket::unpack_sockaddr_in, avg 2µs/call |
| 384 | } else { | ||||
| 385 | croak "usage: sin_sv = sockaddr_in(port,iaddr))" unless @_ == 2; | ||||
| 386 | pack_sockaddr_in(@_); | ||||
| 387 | } | ||||
| 388 | } | ||||
| 389 | |||||
| 390 | sub sockaddr_un { | ||||
| 391 | if (wantarray) { | ||||
| 392 | croak "usage: (filename) = sockaddr_un(sun_sv)" unless @_ == 1; | ||||
| 393 | unpack_sockaddr_un(@_); | ||||
| 394 | } else { | ||||
| 395 | croak "usage: sun_sv = sockaddr_un(filename)" unless @_ == 1; | ||||
| 396 | pack_sockaddr_un(@_); | ||||
| 397 | } | ||||
| 398 | } | ||||
| 399 | |||||
| 400 | sub AUTOLOAD { | ||||
| 401 | my($constname); | ||||
| 402 | ($constname = $AUTOLOAD) =~ s/.*:://; | ||||
| 403 | croak "&Socket::constant not defined" if $constname eq 'constant'; | ||||
| 404 | my ($error, $val) = constant($constname); | ||||
| 405 | if ($error) { | ||||
| 406 | croak $error; | ||||
| 407 | } | ||||
| 408 | *$AUTOLOAD = sub { $val }; | ||||
| 409 | goto &$AUTOLOAD; | ||||
| 410 | } | ||||
| 411 | |||||
| 412 | 1 | 415µs | 1 | 403µs | XSLoader::load 'Socket', $VERSION; # spent 403µs making 1 call to XSLoader::load |
| 413 | |||||
| 414 | 1 | 64µs | 1; | ||
# spent 82.1ms within Socket::inet_aton which was called 2 times, avg 41.1ms/call:
# 2 times (82.1ms+0s) by IO::Socket::INET::_get_addr at line 131 of IO/Socket/INET.pm, avg 41.1ms/call | |||||
# spent 23µs within Socket::inet_ntoa which was called 3 times, avg 8µs/call:
# 3 times (23µs+0s) by IO::Socket::INET::peerhost at line 306 of IO/Socket/INET.pm, avg 8µs/call | |||||
# spent 13µs within Socket::pack_sockaddr_in which was called 2 times, avg 7µs/call:
# 2 times (13µs+0s) by IO::Socket::INET::configure at line 232 of IO/Socket/INET.pm, avg 7µs/call | |||||
# spent 13µs within Socket::unpack_sockaddr_in which was called 6 times, avg 2µs/call:
# 6 times (13µs+0s) by Socket::sockaddr_in at line 383 of Socket.pm, avg 2µs/call |