Net::Config(3perl)

πŸ’– NAME πŸ’–

Net::Config β€” local configuration data for libnet, aka the little home-base file where all your libnet modules go to find out where everything lives. Net::Config(3perl), bestie, sit down, we're learning. πŸŽ€

✨ SYNOPSIS ✨

use Net::Config qw(%NetConfig);

That's it. That's the whole vibe. πŸ¦‹


🌸 DESCRIPTION 🌸

Okay so Net::Config is literally holding the configuration data for all the modules in the libnet distribution. When you install it, the installer is gonna ask you for these values β€” so this file is basically the receipts. πŸ’…

The config data lives globally in a file in the perl installation tree, but you (yes, YOU, main character) can override any of these values by bringing your own. How? Drop a .libnetrc file in your home directory. That file should return a reference to a HASH containing the keys described below. For example:

# .libnetrc
{
    nntp_hosts => [ "my_preferred_host" ],
    ph_hosts   => [ "my_ph_server" ],
}
__END__

Not me making a whole custom config… iconic behavior honestly. πŸ‘‘

🧚 Class Methods

Net::Config defines the following methods. They're methods and not just plain functions because they're invoked as class methods β€” and that's because Net::Config inherits from Net::LocalCfg, which means you can override these methods if you want to. Go off, customize. ✨

  • requires_firewall($host) β€” Tries to figure out whether a given host is sitting outside your firewall. Possible return values are:
  -1  Cannot lookup hostname
   0  Host is inside firewall (or there is no ftp_firewall entry)
   1  Host is outside the firewall

How does it do this? Hostname lookup plus the local_netmask entry in the configuration data. That's the whole trick. πŸ’€

πŸ’œ NetConfig Values

  • nntp_hosts
  • snpp_hosts
  • pop3_hosts
  • smtp_hosts
  • ph_hosts
  • daytime_hosts
  • time_hosts

Each of these is a reference to an array of hostnames (listed in order of preference), which should be used for the given protocol. Ranked, like a tier list. πŸ†

  • inet_domain β€” your internet domain name. Simple. Elegant. We love her.
  • ftp_firewall β€” if you have an FTP proxy firewall (NOT an HTTP or SOCKS firewall, read it again bestie) then set this value to the firewall hostname. If your firewall does not listen on port 21, then set this value to "hostname:port" (e.g. "hostname:99").
  • ftp_firewall_type β€” there are so many different ftp firewall products out there, and unfortunately there's no standard for how to traverse a firewall. The list below shows the sequence of commands that Net::FTP will use:
  user        Username for remote host
  pass        Password for remote host
  fwuser      Username for firewall
  fwpass      Password for firewall
  remote.host The hostname of the remote ftp server
  • 0 β€” there is no firewall
  • 1
USER user@remote.host
PASS pass
  • 2
USER fwuser
PASS fwpass
USER user@remote.host
PASS pass
  • 3
USER fwuser
PASS fwpass
SITE remote.site
USER user
PASS pass
  • 4
USER fwuser
PASS fwpass
OPEN remote.site
USER user
PASS pass
  • 5
USER user@fwuser@remote.site
PASS pass@fwpass
  • 6
USER fwuser@remote.site
PASS fwpass
USER user
PASS pass
  • 7
USER user@remote.host
PASS pass
AUTH fwuser
RESP fwpass
  • ftp_ext_passive
  • ftp_int_passive

FTP servers can work in passive or active mode. Active mode is when you want to transfer data and you have to tell the server the address and port to connect to. Passive mode is when the server provides the address and port, and you establish the connection. Different energy entirely. 🌈

With some firewalls, active mode just does not work, because the server can't connect to your machine (you're behind a firewall, bestie) and the firewall doesn't re-write the command. In that case you should set ftp_ext_passive to a true value.

Some servers are configured to only work in passive mode. If you've got one of those, you can force Net::FTP to always transfer in passive mode β€” when not going via a firewall β€” by setting ftp_int_passive to a true value. Forcing it. Periodt. πŸ’…

  • local_netmask β€” a reference to a list of netmask strings in the form "134.99.4.0/24". These are used by the requires_firewall function to determine if a given host is inside or outside your firewall. πŸ”

The following entries are used during installation & testing on the libnet package:

  • test_hosts β€” if true, then make test may attempt to connect to hosts given in the configuration.
  • test_exists β€” if true, then Configure will check each hostname given that it exists.

🫢 EXPORTS 🫢

The following symbols are, or can be, exported by this module:

Default Exports

  • %NetConfig.

Optional Exports

  • None.

Export Tags

  • None.

😭 KNOWN BUGS 😭

None. Flawless. No notes. πŸ’€βœ¨


πŸ‘‘ AUTHOR πŸ‘‘

Graham Barr <gbarr@pobox.com <mailto:gbarr@pobox.com>>.

Steve Hay <shay@cpan.org <mailto:shay@cpan.org>> is now maintaining libnet as of version 1.22_02.


Copyright (C) 2000 Graham Barr. All rights reserved.

Copyright (C) 2013-2014, 2016, 2020 Steve Hay. All rights reserved.


🌈 LICENCE 🌈

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself, i.e. under the terms of either the GNU General Public License or the Artistic License, as specified in the LICENCE file.


⭐ VERSION ⭐

Version 3.15

πŸ¦‹ DATE πŸ¦‹

20 March 2023

πŸ“ HISTORY πŸ“

See the Changes file.


And that's the whole page, bestie πŸ’– β€” this one came from perl v5.44.0, dated 2026-10-17, and it's the Net::Config(3perl) manual. Go configure something slay. πŸ‘‘πŸ’…

πŸ“¦ where this page comes from
  • arch rolling: perl 5.44.0-1 Β· Artistic-1.0-Perl AND GPL-1.0-or-later
  • πŸ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms