App-ipchgmon v1.0.7 Perl 5 v5.38.2 aarch64-freebsd
- Status
- Fail
- From
- Slaven Rezić
- Dist
-
App-ipchgmon v1.0.7
- Platform
- Perl 5 v5.38.2 aarch64-freebsd
- Date
- 2023-12-22 17:15:47
- ID
- bf8f34f8-a0ed-11ee-b84a-bfea6d8775ea
This distribution has been tested as part of the CPAN Testers
project, supporting the Perl programming language. See
http://wiki.cpantesters.org/ for more information or email
questions to cpan-testers-discuss@perl.org
--
Dear John Davies,
This is a computer-generated report for App-ipchgmon-1.0.7
on perl 5.38.2, created by CPAN-Reporter-1.2019.
Thank you for uploading your work to CPAN. However, there was a problem
testing your distribution.
If you think this report is invalid, please consult the CPAN Testers Wiki
for suggestions on how to avoid getting FAIL reports for missing library
or binary dependencies, unsupported operating systems, and so on:
http://wiki.cpantesters.org/wiki/CPANAuthorNotes
Sections of this report:
* Tester comments
* Program output
* Prerequisites
* Environment and other context
------------------------------
TESTER COMMENTS
------------------------------
Additional comments from tester:
none provided
------------------------------
PROGRAM OUTPUT
------------------------------
Output from '/usr/bin/make test':
PERL_DL_NONLAZY=1 "/usr/perl5.38.2/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
# Failed test 'NAME found'
# at t/00-modulino.t line 23.
# 'NNAAMMEE
# ipchgmon.pm - Watches for changes to public facing IP addresses
#
# SSYYNNOOPPSSIISS
# perl ipchgmon.pm --file c:\data\log.txt --server example.com
#
# Who knows? It might even work. More usually, in a cron job:
#
# perl ipchgmon --file ~/log.txt \
# --server back_office_top_shelf \
# --dnsname example.com \
# --leeway 86400 \
# --email serverchange@example.com \
# --mailserver 192.168.0.2 \
# --mailfrom ipchgmon@example.com \
# --mailsubject 'Change of IP address'
#
# BBAACCKKGGRROOUUNNDD
# I and friends run email and other servers at home. I pay for a static IP
# address with the clause in my contract that force majeur may require a
# change. Others are on dynamic addresses. Should the public facing
# address change, we want to know. This modulino is intended to monitor
# the public IP address and shout for help should the address change. One
# friend is looking at code to change public DNS records automatically.
#
# DDEESSCCRRIIPPTTIIOONN
# This modulino is intended to be run automatically as a cron job. It
# should check whether the server running it has changed its IP address.
# If so, messages should be sent to those specified.
#
# Either IPv4 or IPv6 or both formats can be tested. It might well be that
# different servers handle the different types.
#
# There are three issues that may be checked. The first is connectivity.
# If there is no connectivity, messages should be sent. No further issues
# will be tested.
#
# The second issue that will be tested is whether the IP address has
# changed. The current public-facing IP address is established via
# internet use and compared to a log file, specified by the "--file"
# option. If it is not the last entry in the log, messages will be sent.
#
# Finally and optionally, the DNS name of the server will be used to get
# another IP address from global DNS. If this is not the last address in
# the log file, messages will be send unless a leeway has been specified
# and this has not expired.
#
# If connectivity is lost, the number of retries and the wait will both be
# options in a later version. At present, or if the retries all fail,
# someone should be sent a message.
#
# The design includes three forms of message, SMS, HTTP and email. It is
# reasonable to send an email if internet connectivity is lost; the server
# may be internal. SMS may be harder to justify. HTTP must depend on the
# location of the server.
#
# There is currently no facility to send different classes of message to
# different addresses. There is nothing inherently impossible about
# writing code to do this if it proves desirable.
#
# If the IP address has changed, messages should be sent without delay or
# retries.
#
# OONN AARRGGUUMMEENNTTSS AANNDD OOPPTTIIOONNSS
# These are processed by Getopt::Long. This means that shorter versions
# may be used. If the first letter of an argument or option is unique, the
# call may be reduced to a single minus sign and the first letter. So the
# "email" argument has an alias, "mailto". But the alias must be specified
# as "--mailt" at least, while "email" can be reduced to "-e".
#
# AARRGGUUMMEENNTTSS
# --file filename THIS OPTION IS COMPULSORY unless --debug is used.
# The file "filename" will be created if it does not exist.
# It may be preferable to use a fully qualified filename.
# Attempting to write to a non-existent directory or without
# the necessary permissions will cause an error. The file is
# plain text containing the IPv4 and IPv6 addresses of the server.
# --server name THIS OPTION IS COMPULSORY unless --debug is used.
# It is the name that will be used to identify the machine
# should internet connectivity be lost or the IP address
# change. It is not used internally and should not be
# confused with the dnsname.
# --dnsname name The name of the server in global DNS.
# --leeway time This option specifies how many seconds should elapse from
# an IP address changing on DNS to a second email being sent.
# It is used only in conjunction with dnsname. If dnsname
# is unspecified, the value of this option is meaningless.
# It isn't compulsory, but without it, messages will be sent
# every time the modulino finds the IP address is not the
# same as returned by DNS. This is fine if you like getting
# up every hour during the night. Otherwise, use something
# like 86400 (one day).
# --email address Multiple instances of this option are acceptable. An email
# will be sent to each, if possible.
# --mailto Synonym for --email.
# --mailserver Must be followed by the name or ip address of the outbound
# server. Some systems may have a default for this.
# --mailport Must be numeric. Will default to 25 if omitted.
# --mailfrom Most servers will insist on this, but some systems may
# have a default.
# --mailsubject Can be omitted if desired. A default would be created
# which would be different for each message type. Subjects
# that include spaces would need quoting. The quote character
# can be OS dependent.
#
# OOPPTTIIOONNSS
# --help Brief manual
# --man Full manual
# --versions Code info
# --debug Debugging information
# --singleemail Sends one email at a time. Prevents multiple email
# addresses appearing in each email and prevents server
# confusion if different mechanisms are used for different
# destinations. Yes, it can happen.
# --4 Check IPv4 addresses. Both will be checked if neither
# or both options are used.
# --6 Check IPv6 addresses. Both will be checked if neither
# or both options are used.
#
# TTOO DDOO
# * Implement SMS messages
#
# * Implement HTTP messages
#
# * implement config file
#
# CCOOPPYYRRIIGGHHTT AANNDD LLIICCEENNSSEE
# Copyright (C) 2022 by John Davies
#
# This library is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
#
# CCRREEDDIITTSS
# https://www.perlmonks.org/?node_id=155288 for the getopt/usage model.
#
# Fergus McMenemie for the talk on modulinos
# (https://www.youtube.com/watch?v=wCW4tpMgdHs).
#
# Corion (https://www.perlmonks.org/?node=Corion) for solving a naming
# blunder of mine.
#
# Slaven Rezic of the CPAN testers for taking the trouble to raise an
# issue that was causing lots of tester reports and suggesting a solution
# I would never have found alone.
#
# Pryrt (https://www.perlmonks.org/?node=pryrt) for spotting that I was
# ignoring the real cause of the problem Slaven had reported.
#
# Hv (https://www.perlmonks.org/?node=hv) for patiently, despite my
# stupidity, showing me how to emulate the testers' issue on my local
# machine.
#
#
# '
# doesn't match '(?^m:NAME)'
# Failed test 'SYNOPSIS found'
# at t/00-modulino.t line 24.
# 'NNAAMMEE
# ipchgmon.pm - Watches for changes to public facing IP addresses
#
# SSYYNNOOPPSSIISS
# perl ipchgmon.pm --file c:\data\log.txt --server example.com
#
# Who knows? It might even work. More usually, in a cron job:
#
# perl ipchgmon --file ~/log.txt \
# --server back_office_top_shelf \
# --dnsname example.com \
# --leeway 86400 \
# --email serverchange@example.com \
# --mailserver 192.168.0.2 \
# --mailfrom ipchgmon@example.com \
# --mailsubject 'Change of IP address'
#
# BBAACCKKGGRROOUUNNDD
# I and friends run email and other servers at home. I pay for a static IP
# address with the clause in my contract that force majeur may require a
# change. Others are on dynamic addresses. Should the public facing
# address change, we want to know. This modulino is intended to monitor
# the public IP address and shout for help should the address change. One
# friend is looking at code to change public DNS records automatically.
#
# DDEESSCCRRIIPPTTIIOONN
# This modulino is intended to be run automatically as a cron job. It
# should check whether the server running it has changed its IP address.
# If so, messages should be sent to those specified.
#
# Either IPv4 or IPv6 or both formats can be tested. It might well be that
# different servers handle the different types.
#
# There are three issues that may be checked. The first is connectivity.
# If there is no connectivity, messages should be sent. No further issues
# will be tested.
#
# The second issue that will be tested is whether the IP address has
# changed. The current public-facing IP address is established via
# internet use and compared to a log file, specified by the "--file"
# option. If it is not the last entry in the log, messages will be sent.
#
# Finally and optionally, the DNS name of the server will be used to get
# another IP address from global DNS. If this is not the last address in
# the log file, messages will be send unless a leeway has been specified
# and this has not expired.
#
# If connectivity is lost, the number of retries and the wait will both be
# options in a later version. At present, or if the retries all fail,
# someone should be sent a message.
#
# The design includes three forms of message, SMS, HTTP and email. It is
# reasonable to send an email if internet connectivity is lost; the server
# may be internal. SMS may be harder to justify. HTTP must depend on the
# location of the server.
#
# There is currently no facility to send different classes of message to
# different addresses. There is nothing inherently impossible about
# writing code to do this if it proves desirable.
#
# If the IP address has changed, messages should be sent without delay or
# retries.
#
# OONN AARRGGUUMMEENNTTSS AANNDD OOPPTTIIOONNSS
# These are processed by Getopt::Long. This means that shorter versions
# may be used. If the first letter of an argument or option is unique, the
# call may be reduced to a single minus sign and the first letter. So the
# "email" argument has an alias, "mailto". But the alias must be specified
# as "--mailt" at least, while "email" can be reduced to "-e".
#
# AARRGGUUMMEENNTTSS
# --file filename THIS OPTION IS COMPULSORY unless --debug is used.
# The file "filename" will be created if it does not exist.
# It may be preferable to use a fully qualified filename.
# Attempting to write to a non-existent directory or without
# the necessary permissions will cause an error. The file is
# plain text containing the IPv4 and IPv6 addresses of the server.
# --server name THIS OPTION IS COMPULSORY unless --debug is used.
# It is the name that will be used to identify the machine
# should internet connectivity be lost or the IP address
# change. It is not used internally and should not be
# confused with the dnsname.
# --dnsname name The name of the server in global DNS.
# --leeway time This option specifies how many seconds should elapse from
# an IP address changing on DNS to a second email being sent.
# It is used only in conjunction with dnsname. If dnsname
# is unspecified, the value of this option is meaningless.
# It isn't compulsory, but without it, messages will be sent
# every time the modulino finds the IP address is not the
# same as returned by DNS. This is fine if you like getting
# up every hour during the night. Otherwise, use something
# like 86400 (one day).
# --email address Multiple instances of this option are acceptable. An email
# will be sent to each, if possible.
# --mailto Synonym for --email.
# --mailserver Must be followed by the name or ip address of the outbound
# server. Some systems may have a default for this.
# --mailport Must be numeric. Will default to 25 if omitted.
# --mailfrom Most servers will insist on this, but some systems may
# have a default.
# --mailsubject Can be omitted if desired. A default would be created
# which would be different for each message type. Subjects
# that include spaces would need quoting. The quote character
# can be OS dependent.
#
# OOPPTTIIOONNSS
# --help Brief manual
# --man Full manual
# --versions Code info
# --debug Debugging information
# --singleemail Sends one email at a time. Prevents multiple email
# addresses appearing in each email and prevents server
# confusion if different mechanisms are used for different
# destinations. Yes, it can happen.
# --4 Check IPv4 addresses. Both will be checked if neither
# or both options are used.
# --6 Check IPv6 addresses. Both will be checked if neither
# or both options are used.
#
# TTOO DDOO
# * Implement SMS messages
#
# * Implement HTTP messages
#
# * implement config file
#
# CCOOPPYYRRIIGGHHTT AANNDD LLIICCEENNSSEE
# Copyright (C) 2022 by John Davies
#
# This library is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
#
# CCRREEDDIITTSS
# https://www.perlmonks.org/?node_id=155288 for the getopt/usage model.
#
# Fergus McMenemie for the talk on modulinos
# (https://www.youtube.com/watch?v=wCW4tpMgdHs).
#
# Corion (https://www.perlmonks.org/?node=Corion) for solving a naming
# blunder of mine.
#
# Slaven Rezic of the CPAN testers for taking the trouble to raise an
# issue that was causing lots of tester reports and suggesting a solution
# I would never have found alone.
#
# Pryrt (https://www.perlmonks.org/?node=pryrt) for spotting that I was
# ignoring the real cause of the problem Slaven had reported.
#
# Hv (https://www.perlmonks.org/?node=hv) for patiently, despite my
# stupidity, showing me how to emulate the testers' issue on my local
# machine.
#
#
# '
# doesn't match '(?^m:SYNOPSIS)'
# Failed test 'DESCRIPTION found'
# at t/00-modulino.t line 25.
# 'NNAAMMEE
# ipchgmon.pm - Watches for changes to public facing IP addresses
#
# SSYYNNOOPPSSIISS
# perl ipchgmon.pm --file c:\data\log.txt --server example.com
#
# Who knows? It might even work. More usually, in a cron job:
#
# perl ipchgmon --file ~/log.txt \
# --server back_office_top_shelf \
# --dnsname example.com \
# --leeway 86400 \
# --email serverchange@example.com \
# --mailserver 192.168.0.2 \
# --mailfrom ipchgmon@example.com \
# --mailsubject 'Change of IP address'
#
# BBAACCKKGGRROOUUNNDD
# I and friends run email and other servers at home. I pay for a static IP
# address with the clause in my contract that force majeur may require a
# change. Others are on dynamic addresses. Should the public facing
# address change, we want to know. This modulino is intended to monitor
# the public IP address and shout for help should the address change. One
# friend is looking at code to change public DNS records automatically.
#
# DDEESSCCRRIIPPTTIIOONN
# This modulino is intended to be run automatically as a cron job. It
# should check whether the server running it has changed its IP address.
# If so, messages should be sent to those specified.
#
# Either IPv4 or IPv6 or both formats can be tested. It might well be that
# different servers handle the different types.
#
# There are three issues that may be checked. The first is connectivity.
# If there is no connectivity, messages should be sent. No further issues
# will be tested.
#
# The second issue that will be tested is whether the IP address has
# changed. The current public-facing IP address is established via
# internet use and compared to a log file, specified by the "--file"
# option. If it is not the last entry in the log, messages will be sent.
#
# Finally and optionally, the DNS name of the server will be used to get
# another IP address from global DNS. If this is not the last address in
# the log file, messages will be send unless a leeway has been specified
# and this has not expired.
#
# If connectivity is lost, the number of retries and the wait will both be
# options in a later version. At present, or if the retries all fail,
# someone should be sent a message.
#
# The design includes three forms of message, SMS, HTTP and email. It is
# reasonable to send an email if internet connectivity is lost; the server
# may be internal. SMS may be harder to justify. HTTP must depend on the
# location of the server.
#
# There is currently no facility to send different classes of message to
# different addresses. There is nothing inherently impossible about
# writing code to do this if it proves desirable.
#
# If the IP address has changed, messages should be sent without delay or
# retries.
#
# OONN AARRGGUUMMEENNTTSS AANNDD OOPPTTIIOONNSS
# These are processed by Getopt::Long. This means that shorter versions
# may be used. If the first letter of an argument or option is unique, the
# call may be reduced to a single minus sign and the first letter. So the
# "email" argument has an alias, "mailto". But the alias must be specified
# as "--mailt" at least, while "email" can be reduced to "-e".
#
# AARRGGUUMMEENNTTSS
# --file filename THIS OPTION IS COMPULSORY unless --debug is used.
# The file "filename" will be created if it does not exist.
# It may be preferable to use a fully qualified filename.
# Attempting to write to a non-existent directory or without
# the necessary permissions will cause an error. The file is
# plain text containing the IPv4 and IPv6 addresses of the server.
# --server name THIS OPTION IS COMPULSORY unless --debug is used.
# It is the name that will be used to identify the machine
# should internet connectivity be lost or the IP address
# change. It is not used internally and should not be
# confused with the dnsname.
# --dnsname name The name of the server in global DNS.
# --leeway time This option specifies how many seconds should elapse from
# an IP address changing on DNS to a second email being sent.
# It is used only in conjunction with dnsname. If dnsname
# is unspecified, the value of this option is meaningless.
# It isn't compulsory, but without it, messages will be sent
# every time the modulino finds the IP address is not the
# same as returned by DNS. This is fine if you like getting
# up every hour during the night. Otherwise, use something
# like 86400 (one day).
# --email address Multiple instances of this option are acceptable. An email
# will be sent to each, if possible.
# --mailto Synonym for --email.
# --mailserver Must be followed by the name or ip address of the outbound
# server. Some systems may have a default for this.
# --mailport Must be numeric. Will default to 25 if omitted.
# --mailfrom Most servers will insist on this, but some systems may
# have a default.
# --mailsubject Can be omitted if desired. A default would be created
# which would be different for each message type. Subjects
# that include spaces would need quoting. The quote character
# can be OS dependent.
#
# OOPPTTIIOONNSS
# --help Brief manual
# --man Full manual
# --versions Code info
# --debug Debugging information
# --singleemail Sends one email at a time. Prevents multiple email
# addresses appearing in each email and prevents server
# confusion if different mechanisms are used for different
# destinations. Yes, it can happen.
# --4 Check IPv4 addresses. Both will be checked if neither
# or both options are used.
# --6 Check IPv6 addresses. Both will be checked if neither
# or both options are used.
#
# TTOO DDOO
# * Implement SMS messages
#
# * Implement HTTP messages
#
# * implement config file
#
# CCOOPPYYRRIIGGHHTT AANNDD LLIICCEENNSSEE
# Copyright (C) 2022 by John Davies
#
# This library is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
#
# CCRREEDDIITTSS
# https://www.perlmonks.org/?node_id=155288 for the getopt/usage model.
#
# Fergus McMenemie for the talk on modulinos
# (https://www.youtube.com/watch?v=wCW4tpMgdHs).
#
# Corion (https://www.perlmonks.org/?node=Corion) for solving a naming
# blunder of mine.
#
# Slaven Rezic of the CPAN testers for taking the trouble to raise an
# issue that was causing lots of tester reports and suggesting a solution
# I would never have found alone.
#
# Pryrt (https://www.perlmonks.org/?node=pryrt) for spotting that I was
# ignoring the real cause of the problem Slaven had reported.
#
# Hv (https://www.perlmonks.org/?node=hv) for patiently, despite my
# stupidity, showing me how to emulate the testers' issue on my local
# machine.
#
#
# '
# doesn't match '(?^m:DESCRIPTION)'
# Failed test 'ARGUMENTS found'
# at t/00-modulino.t line 26.
# 'NNAAMMEE
# ipchgmon.pm - Watches for changes to public facing IP addresses
#
# SSYYNNOOPPSSIISS
# perl ipchgmon.pm --file c:\data\log.txt --server example.com
#
# Who knows? It might even work. More usually, in a cron job:
#
# perl ipchgmon --file ~/log.txt \
# --server back_office_top_shelf \
# --dnsname example.com \
# --leeway 86400 \
# --email serverchange@example.com \
# --mailserver 192.168.0.2 \
# --mailfrom ipchgmon@example.com \
# --mailsubject 'Change of IP address'
#
# BBAACCKKGGRROOUUNNDD
# I and friends run email and other servers at home. I pay for a static IP
# address with the clause in my contract that force majeur may require a
# change. Others are on dynamic addresses. Should the public facing
# address change, we want to know. This modulino is intended to monitor
# the public IP address and shout for help should the address change. One
# friend is looking at code to change public DNS records automatically.
#
# DDEESSCCRRIIPPTTIIOONN
# This modulino is intended to be run automatically as a cron job. It
# should check whether the server running it has changed its IP address.
# If so, messages should be sent to those specified.
#
# Either IPv4 or IPv6 or both formats can be tested. It might well be that
# different servers handle the different types.
#
# There are three issues that may be checked. The first is connectivity.
# If there is no connectivity, messages should be sent. No further issues
# will be tested.
#
# The second issue that will be tested is whether the IP address has
# changed. The current public-facing IP address is established via
# internet use and compared to a log file, specified by the "--file"
# option. If it is not the last entry in the log, messages will be sent.
#
# Finally and optionally, the DNS name of the server will be used to get
# another IP address from global DNS. If this is not the last address in
# the log file, messages will be send unless a leeway has been specified
# and this has not expired.
#
# If connectivity is lost, the number of retries and the wait will both be
# options in a later version. At present, or if the retries all fail,
# someone should be sent a message.
#
# The design includes three forms of message, SMS, HTTP and email. It is
# reasonable to send an email if internet connectivity is lost; the server
# may be internal. SMS may be harder to justify. HTTP must depend on the
# location of the server.
#
# There is currently no facility to send different classes of message to
# different addresses. There is nothing inherently impossible about
# writing code to do this if it proves desirable.
#
# If the IP address has changed, messages should be sent without delay or
# retries.
#
# OONN AARRGGUUMMEENNTTSS AANNDD OOPPTTIIOONNSS
# These are processed by Getopt::Long. This means that shorter versions
# may be used. If the first letter of an argument or option is unique, the
# call may be reduced to a single minus sign and the first letter. So the
# "email" argument has an alias, "mailto". But the alias must be specified
# as "--mailt" at least, while "email" can be reduced to "-e".
#
# AARRGGUUMMEENNTTSS
# --file filename THIS OPTION IS COMPULSORY unless --debug is used.
# The file "filename" will be created if it does not exist.
# It may be preferable to use a fully qualified filename.
# Attempting to write to a non-existent directory or without
# the necessary permissions will cause an error. The file is
# plain text containing the IPv4 and IPv6 addresses of the server.
# --server name THIS OPTION IS COMPULSORY unless --debug is used.
# It is the name that will be used to identify the machine
# should internet connectivity be lost or the IP address
# change. It is not used internally and should not be
# confused with the dnsname.
# --dnsname name The name of the server in global DNS.
# --leeway time This option specifies how many seconds should elapse from
# an IP address changing on DNS to a second email being sent.
# It is used only in conjunction with dnsname. If dnsname
# is unspecified, the value of this option is meaningless.
# It isn't compulsory, but without it, messages will be sent
# every time the modulino finds the IP address is not the
# same as returned by DNS. This is fine if you like getting
# up every hour during the night. Otherwise, use something
# like 86400 (one day).
# --email address Multiple instances of this option are acceptable. An email
# will be sent to each, if possible.
# --mailto Synonym for --email.
# --mailserver Must be followed by the name or ip address of the outbound
# server. Some systems may have a default for this.
# --mailport Must be numeric. Will default to 25 if omitted.
# --mailfrom Most servers will insist on this, but some systems may
# have a default.
# --mailsubject Can be omitted if desired. A default would be created
# which would be different for each message type. Subjects
# that include spaces would need quoting. The quote character
# can be OS dependent.
#
# OOPPTTIIOONNSS
# --help Brief manual
# --man Full manual
# --versions Code info
# --debug Debugging information
# --singleemail Sends one email at a time. Prevents multiple email
# addresses appearing in each email and prevents server
# confusion if different mechanisms are used for different
# destinations. Yes, it can happen.
# --4 Check IPv4 addresses. Both will be checked if neither
# or both options are used.
# --6 Check IPv6 addresses. Both will be checked if neither
# or both options are used.
#
# TTOO DDOO
# * Implement SMS messages
#
# * Implement HTTP messages
#
# * implement config file
#
# CCOOPPYYRRIIGGHHTT AANNDD LLIICCEENNSSEE
# Copyright (C) 2022 by John Davies
#
# This library is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
#
# CCRREEDDIITTSS
# https://www.perlmonks.org/?node_id=155288 for the getopt/usage model.
#
# Fergus McMenemie for the talk on modulinos
# (https://www.youtube.com/watch?v=wCW4tpMgdHs).
#
# Corion (https://www.perlmonks.org/?node=Corion) for solving a naming
# blunder of mine.
#
# Slaven Rezic of the CPAN testers for taking the trouble to raise an
# issue that was causing lots of tester reports and suggesting a solution
# I would never have found alone.
#
# Pryrt (https://www.perlmonks.org/?node=pryrt) for spotting that I was
# ignoring the real cause of the problem Slaven had reported.
#
# Hv (https://www.perlmonks.org/?node=hv) for patiently, despite my
# stupidity, showing me how to emulate the testers' issue on my local
# machine.
#
#
# '
# doesn't match '(?^m:ARGUMENTS)'
# Failed test 'OPTIONS found'
# at t/00-modulino.t line 27.
# 'NNAAMMEE
# ipchgmon.pm - Watches for changes to public facing IP addresses
#
# SSYYNNOOPPSSIISS
# perl ipchgmon.pm --file c:\data\log.txt --server example.com
#
# Who knows? It might even work. More usually, in a cron job:
#
# perl ipchgmon --file ~/log.txt \
# --server back_office_top_shelf \
# --dnsname example.com \
# --leeway 86400 \
# --email serverchange@example.com \
# --mailserver 192.168.0.2 \
# --mailfrom ipchgmon@example.com \
# --mailsubject 'Change of IP address'
#
# BBAACCKKGGRROOUUNNDD
# I and friends run email and other servers at home. I pay for a static IP
# address with the clause in my contract that force majeur may require a
# change. Others are on dynamic addresses. Should the public facing
# address change, we want to know. This modulino is intended to monitor
# the public IP address and shout for help should the address change. One
# friend is looking at code to change public DNS records automatically.
#
# DDEESSCCRRIIPPTTIIOONN
# This modulino is intended to be run automatically as a cron job. It
# should check whether the server running it has changed its IP address.
# If so, messages should be sent to those specified.
#
# Either IPv4 or IPv6 or both formats can be tested. It might well be that
# different servers handle the different types.
#
# There are three issues that may be checked. The first is connectivity.
# If there is no connectivity, messages should be sent. No further issues
# will be tested.
#
# The second issue that will be tested is whether the IP address has
# changed. The current public-facing IP address is established via
# internet use and compared to a log file, specified by the "--file"
# option. If it is not the last entry in the log, messages will be sent.
#
# Finally and optionally, the DNS name of the server will be used to get
# another IP address from global DNS. If this is not the last address in
# the log file, messages will be send unless a leeway has been specified
# and this has not expired.
#
# If connectivity is lost, the number of retries and the wait will both be
# options in a later version. At present, or if the retries all fail,
# someone should be sent a message.
#
# The design includes three forms of message, SMS, HTTP and email. It is
# reasonable to send an email if internet connectivity is lost; the server
# may be internal. SMS may be harder to justify. HTTP must depend on the
# location of the server.
#
# There is currently no facility to send different classes of message to
# different addresses. There is nothing inherently impossible about
# writing code to do this if it proves desirable.
#
# If the IP address has changed, messages should be sent without delay or
# retries.
#
# OONN AARRGGUUMMEENNTTSS AANNDD OOPPTTIIOONNSS
# These are processed by Getopt::Long. This means that shorter versions
# may be used. If the first letter of an argument or option is unique, the
# call may be reduced to a single minus sign and the first letter. So the
# "email" argument has an alias, "mailto". But the alias must be specified
# as "--mailt" at least, while "email" can be reduced to "-e".
#
# AARRGGUUMMEENNTTSS
# --file filename THIS OPTION IS COMPULSORY unless --debug is used.
# The file "filename" will be created if it does not exist.
# It may be preferable to use a fully qualified filename.
# Attempting to write to a non-existent directory or without
# the necessary permissions will cause an error. The file is
# plain text containing the IPv4 and IPv6 addresses of the server.
# --server name THIS OPTION IS COMPULSORY unless --debug is used.
# It is the name that will be used to identify the machine
# should internet connectivity be lost or the IP address
# change. It is not used internally and should not be
# confused with the dnsname.
# --dnsname name The name of the server in global DNS.
# --leeway time This option specifies how many seconds should elapse from
# an IP address changing on DNS to a second email being sent.
# It is used only in conjunction with dnsname. If dnsname
# is unspecified, the value of this option is meaningless.
# It isn't compulsory, but without it, messages will be sent
# every time the modulino finds the IP address is not the
# same as returned by DNS. This is fine if you like getting
# up every hour during the night. Otherwise, use something
# like 86400 (one day).
# --email address Multiple instances of this option are acceptable. An email
# will be sent to each, if possible.
# --mailto Synonym for --email.
# --mailserver Must be followed by the name or ip address of the outbound
# server. Some systems may have a default for this.
# --mailport Must be numeric. Will default to 25 if omitted.
# --mailfrom Most servers will insist on this, but some systems may
# have a default.
# --mailsubject Can be omitted if desired. A default would be created
# which would be different for each message type. Subjects
# that include spaces would need quoting. The quote character
# can be OS dependent.
#
# OOPPTTIIOONNSS
# --help Brief manual
# --man Full manual
# --versions Code info
# --debug Debugging information
# --singleemail Sends one email at a time. Prevents multiple email
# addresses appearing in each email and prevents server
# confusion if different mechanisms are used for different
# destinations. Yes, it can happen.
# --4 Check IPv4 addresses. Both will be checked if neither
# or both options are used.
# --6 Check IPv6 addresses. Both will be checked if neither
# or both options are used.
#
# TTOO DDOO
# * Implement SMS messages
#
# * Implement HTTP messages
#
# * implement config file
#
# CCOOPPYYRRIIGGHHTT AANNDD LLIICCEENNSSEE
# Copyright (C) 2022 by John Davies
#
# This library is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
#
# CCRREEDDIITTSS
# https://www.perlmonks.org/?node_id=155288 for the getopt/usage model.
#
# Fergus McMenemie for the talk on modulinos
# (https://www.youtube.com/watch?v=wCW4tpMgdHs).
#
# Corion (https://www.perlmonks.org/?node=Corion) for solving a naming
# blunder of mine.
#
# Slaven Rezic of the CPAN testers for taking the trouble to raise an
# issue that was causing lots of tester reports and suggesting a solution
# I would never have found alone.
#
# Pryrt (https://www.perlmonks.org/?node=pryrt) for spotting that I was
# ignoring the real cause of the problem Slaven had reported.
#
# Hv (https://www.perlmonks.org/?node=hv) for patiently, despite my
# stupidity, showing me how to emulate the testers' issue on my local
# machine.
#
#
# '
# doesn't match '(?^m:OPTIONS)'
# Failed test 'COPYRIGHT found'
# at t/00-modulino.t line 28.
# 'NNAAMMEE
# ipchgmon.pm - Watches for changes to public facing IP addresses
#
# SSYYNNOOPPSSIISS
# perl ipchgmon.pm --file c:\data\log.txt --server example.com
#
# Who knows? It might even work. More usually, in a cron job:
#
# perl ipchgmon --file ~/log.txt \
# --server back_office_top_shelf \
# --dnsname example.com \
# --leeway 86400 \
# --email serverchange@example.com \
# --mailserver 192.168.0.2 \
# --mailfrom ipchgmon@example.com \
# --mailsubject 'Change of IP address'
#
# BBAACCKKGGRROOUUNNDD
# I and friends run email and other servers at home. I pay for a static IP
# address with the clause in my contract that force majeur may require a
# change. Others are on dynamic addresses. Should the public facing
# address change, we want to know. This modulino is intended to monitor
# the public IP address and shout for help should the address change. One
# friend is looking at code to change public DNS records automatically.
#
# DDEESSCCRRIIPPTTIIOONN
# This modulino is intended to be run automatically as a cron job. It
# should check whether the server running it has changed its IP address.
# If so, messages should be sent to those specified.
#
# Either IPv4 or IPv6 or both formats can be tested. It might well be that
# different servers handle the different types.
#
# There are three issues that may be checked. The first is connectivity.
# If there is no connectivity, messages should be sent. No further issues
# will be tested.
#
# The second issue that will be tested is whether the IP address has
# changed. The current public-facing IP address is established via
# internet use and compared to a log file, specified by the "--file"
# option. If it is not the last entry in the log, messages will be sent.
#
# Finally and optionally, the DNS name of the server will be used to get
# another IP address from global DNS. If this is not the last address in
# the log file, messages will be send unless a leeway has been specified
# and this has not expired.
#
# If connectivity is lost, the number of retries and the wait will both be
# options in a later version. At present, or if the retries all fail,
# someone should be sent a message.
#
# The design includes three forms of message, SMS, HTTP and email. It is
# reasonable to send an email if internet connectivity is lost; the server
# may be internal. SMS may be harder to justify. HTTP must depend on the
# location of the server.
#
# There is currently no facility to send different classes of message to
# different addresses. There is nothing inherently impossible about
# writing code to do this if it proves desirable.
#
# If the IP address has changed, messages should be sent without delay or
# retries.
#
# OONN AARRGGUUMMEENNTTSS AANNDD OOPPTTIIOONNSS
# These are processed by Getopt::Long. This means that shorter versions
# may be used. If the first letter of an argument or option is unique, the
# call may be reduced to a single minus sign and the first letter. So the
# "email" argument has an alias, "mailto". But the alias must be specified
# as "--mailt" at least, while "email" can be reduced to "-e".
#
# AARRGGUUMMEENNTTSS
# --file filename THIS OPTION IS COMPULSORY unless --debug is used.
# The file "filename" will be created if it does not exist.
# It may be preferable to use a fully qualified filename.
# Attempting to write to a non-existent directory or without
# the necessary permissions will cause an error. The file is
# plain text containing the IPv4 and IPv6 addresses of the server.
# --server name THIS OPTION IS COMPULSORY unless --debug is used.
# It is the name that will be used to identify the machine
# should internet connectivity be lost or the IP address
# change. It is not used internally and should not be
# confused with the dnsname.
# --dnsname name The name of the server in global DNS.
# --leeway time This option specifies how many seconds should elapse from
# an IP address changing on DNS to a second email being sent.
# It is used only in conjunction with dnsname. If dnsname
# is unspecified, the value of this option is meaningless.
# It isn't compulsory, but without it, messages will be sent
# every time the modulino finds the IP address is not the
# same as returned by DNS. This is fine if you like getting
# up every hour during the night. Otherwise, use something
# like 86400 (one day).
# --email address Multiple instances of this option are acceptable. An email
# will be sent to each, if possible.
# --mailto Synonym for --email.
# --mailserver Must be followed by the name or ip address of the outbound
# server. Some systems may have a default for this.
# --mailport Must be numeric. Will default to 25 if omitted.
# --mailfrom Most servers will insist on this, but some systems may
# have a default.
# --mailsubject Can be omitted if desired. A default would be created
# which would be different for each message type. Subjects
# that include spaces would need quoting. The quote character
# can be OS dependent.
#
# OOPPTTIIOONNSS
# --help Brief manual
# --man Full manual
# --versions Code info
# --debug Debugging information
# --singleemail Sends one email at a time. Prevents multiple email
# addresses appearing in each email and prevents server
# confusion if different mechanisms are used for different
# destinations. Yes, it can happen.
# --4 Check IPv4 addresses. Both will be checked if neither
# or both options are used.
# --6 Check IPv6 addresses. Both will be checked if neither
# or both options are used.
#
# TTOO DDOO
# * Implement SMS messages
#
# * Implement HTTP messages
#
# * implement config file
#
# CCOOPPYYRRIIGGHHTT AANNDD LLIICCEENNSSEE
# Copyright (C) 2022 by John Davies
#
# This library is free software; you can redistribute it and/or modify it
# under the same terms as Perl itself.
#
# CCRREEDDIITTSS
# https://www.perlmonks.org/?node_id=155288 for the getopt/usage model.
#
# Fergus McMenemie for the talk on modulinos
# (https://www.youtube.com/watch?v=wCW4tpMgdHs).
#
# Corion (https://www.perlmonks.org/?node=Corion) for solving a naming
# blunder of mine.
#
# Slaven Rezic of the CPAN testers for taking the trouble to raise an
# issue that was causing lots of tester reports and suggesting a solution
# I would never have found alone.
#
# Pryrt (https://www.perlmonks.org/?node=pryrt) for spotting that I was
# ignoring the real cause of the problem Slaven had reported.
#
# Hv (https://www.perlmonks.org/?node=hv) for patiently, despite my
# stupidity, showing me how to emulate the testers' issue on my local
# machine.
#
#
# '
# doesn't match '(?^m:COPYRIGHT)'
# Looks like you failed 6 tests of 8.
# Failed test 'Man gives sane output'
# at t/00-modulino.t line 31.
# Looks like you failed 1 test of 5.
t/00-modulino.t ...........
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/5 subtests
t/10-options.t ............ ok
t/20-file.t ............... ok
t/22-new-ip.t ............. ok
t/24-read-file.t .......... ok
t/26-check-changes.t ...... ok
t/28-nslookup.t ........... ok
t/30-last.t ............... ok
t/32-check-dns.t .......... ok
t/34-single-ip-version.t .. ok
No IPv6 address. You may need to run with the --4 option. at t/50-ip-via-web.t line 21.
t/50-ip-via-web.t ......... ok
t/51-ip-validation.t ...... ok
t/60-email-address.t ...... ok
t/62-email-delivery.t ..... ok
t/63-email-transport.t .... ok
Test Summary Report
-------------------
t/00-modulino.t (Wstat: 256 (exited 1) Tests: 5 Failed: 1)
Failed test: 3
Non-zero exit status: 1
Files=15, Tests=122, 33 wallclock secs ( 0.09 usr 0.02 sys + 21.45 cusr 4.07 csys = 25.64 CPU)
Result: FAIL
Failed 1/15 test programs. 1/122 subtests failed.
*** Error code 255
Stop.
make: stopped in /home/cpansand/.cpan/build/2023122216/App-ipchgmon-1.0.7-0
------------------------------
PREREQUISITES
------------------------------
Prerequisite modules loaded:
requires:
Module Need Have
------------------------------ ---- ----------
Data::Dumper 0 2.188
Data::Validate::Email 0 0.06
Data::Validate::IP 0 0.31
DateTime 0 1.65
DateTime::Format::Strptime 0 1.79
Email::Sender::Transport::SMTP 0 2.600
Email::Stuffer 0 0.020
feature 0 1.82
File::Find 0 1.43
FindBin 0 1.53
Getopt::Long 0 2.57
LWP::Online 0 1.08
LWP::UserAgent 0 6.72
Pod::Usage 0 2.03
Socket 0 2.036
strict 0 1.12
Text::CSV 0 2.04
warnings 0 1.65
build_requires:
Module Need Have
------------------------------ ---- ----------
ExtUtils::MakeMaker 0 7.70
lib 0 0.65
Regexp::Common 0 2017060201
Test::Exception 0 0.43
Test::File 0 1.993
Test::MockModule 0 0.177.0
Test::More 0 1.302198
configure_requires:
Module Need Have
------------------------------ ---- ----------
ExtUtils::MakeMaker 0 7.70
------------------------------
ENVIRONMENT AND OTHER CONTEXT
------------------------------
Environment variables:
LANG = C.UTF-8
PATH = /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/cpansand/bin/freebsd14.0:/home/cpansand/bin/sh:/home/cpansand/bin:/usr/games:/home/cpansand/devel:/home/eserte/src/srezic-misc/scripts
PERL5LIB = /home/cpansand/.cpan/build/2023122216/Test-MockModule-v0.177.0-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Test-MockModule-v0.177.0-0/blib/lib:/home/cpansand/.cpan/build/2023122216/LWP-Online-1.08-0/blib/arch:/home/cpansand/.cpan/build/2023122216/LWP-Online-1.08-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Email-Stuffer-0.020-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Email-Stuffer-0.020-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Email-MIME-1.953-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Email-MIME-1.953-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Email-MessageID-1.408-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Email-MessageID-1.408-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Email-MIME-Encodings-1.317-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Email-MIME-Encodings-1.317-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Email-MIME-ContentType-1.028-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Email-MIME-ContentType-1.028-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Data-Validate-IP-0.31-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Data-Validate-IP-0.31-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Data-Validate-Email-0.06-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Data-Validate-Email-0.06-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Data-Validate-Domain-0.15-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Data-Validate-Domain-0.15-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Net-Domain-TLD-1.75-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Net-Domain-TLD-1.75-0/blib/lib
PERL5OPT =
PERL5_CPANPLUS_IS_RUNNING = 9252
PERL5_CPAN_IS_RUNNING = 9252
PERL5_CPAN_IS_RUNNING_IN_RECURSION = 9230,9252
PERLDOC = -MPod::Perldoc::ToTextOverstrike
PERL_BATCH = yes
PERL_CANARY_STABILITY_NOPROMPT = 1
PERL_CPAN_REPORTER_CONFIG = /var/tmp/cpansmoker-1023/2023122216/cpanreporter_000_config.ini
PERL_EXTUTILS_AUTOINSTALL = --defaultdeps
PERL_USE_UNSAFE_INC = 1
SHELL = /usr/local/bin/zsh
TERM = screen
TMPDIR = /var/tmp/cpansmoker-1023/2023122216
Perl special variables (and OS-specific diagnostics, for MSWin32):
$^X = /usr/perl5.38.2/bin/perl
$UID/$EUID = 1023 / 1023
$GID = 1023 1023
$EGID = 1023 1023
Perl module toolchain versions installed:
Module Have
------------------- --------
CPAN 2.36
CPAN::Meta 2.150010
Cwd 3.89
ExtUtils::CBuilder 0.280238
ExtUtils::Command 7.70
ExtUtils::Install 2.22
ExtUtils::MakeMaker 7.70
ExtUtils::Manifest 1.73
ExtUtils::ParseXS 3.51
File::Spec 3.88
JSON 4.10
JSON::PP 4.16
Module::Build 0.4234
Module::Signature n/a
Parse::CPAN::Meta 2.150010
Test2 1.302198
Test::Harness 3.44
Test::More 1.302198
YAML 1.30
YAML::Syck 1.34
version 0.9929
--
Summary of my perl5 (revision 5 version 38 subversion 2) configuration:
Platform:
osname=freebsd
osvers=14.0-stable
archname=aarch64-freebsd
uname='freebsd cloud9.bbbike.org 14.0-stable freebsd 14.0-stable #0 stable14-8e41bbf24: mon dec 11 17:05:58 utc 2023 root@cloud9.bbbike.org:usrobjhomeprojectsfreebsd-srcarm64.aarch64sysgeneric arm64 '
config_args='-ds -e -Dprefix=/usr/perl5.38.2 -Dcf_email=srezic@cpan.org -Doptimize=-O2 -pipe'
hint=recommended
useposix=true
d_sigaction=define
useithreads=undef
usemultiplicity=undef
use64bitint=define
use64bitall=define
uselongdouble=undef
usemymalloc=n
default_inc_excludes_dot=define
Compiler:
cc='cc'
ccflags ='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
optimize='-O2 -pipe'
cppflags='-DHAS_FPSETMASK -DHAS_FLOATINGPOINT_H -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include'
ccversion=''
gccversion='FreeBSD Clang 16.0.6 (https://github.com/llvm/llvm-project.git llvmorg-16.0.6-0-g7cbf1a259152)'
gccosandvers=''
intsize=4
longsize=8
ptrsize=8
doublesize=8
byteorder=12345678
doublekind=3
d_longlong=define
longlongsize=8
d_longdbl=define
longdblsize=16
longdblkind=1
ivtype='long'
ivsize=8
nvtype='double'
nvsize=8
Off_t='off_t'
lseeksize=8
alignbytes=8
prototype=define
Linker and Libraries:
ld='cc'
ldflags ='-Wl,-E -fstack-protector-strong -L/usr/local/lib'
libpth=/usr/lib /usr/local/lib /usr/lib/clang/16/lib
libs=-lpthread -lgdbm -ldl -lm -lcrypt -lutil -lc
perllibs=-lpthread -ldl -lm -lcrypt -lutil -lc
libc=
so=so
useshrplib=false
libperl=libperl.a
gnulibc_version=''
Dynamic Linking:
dlsrc=dl_dlopen.xs
dlext=so
d_dlsymun=undef
ccdlflags=' '
cccdlflags='-DPIC -fPIC'
lddlflags='-shared -L/usr/local/lib -fstack-protector-strong'
Characteristics of this binary (from libperl):
Compile-time options:
HAS_LONG_DOUBLE
HAS_STRTOLD
HAS_TIMES
PERLIO_LAYERS
PERL_COPY_ON_WRITE
PERL_DONT_CREATE_GVSV
PERL_HASH_FUNC_SIPHASH13
PERL_HASH_USE_SBOX32
PERL_MALLOC_WRAP
PERL_OP_PARENT
PERL_PRESERVE_IVUV
PERL_USE_SAFE_PUTENV
USE_64_BIT_ALL
USE_64_BIT_INT
USE_LARGE_FILES
USE_LOCALE
USE_LOCALE_COLLATE
USE_LOCALE_CTYPE
USE_LOCALE_NUMERIC
USE_LOCALE_TIME
USE_PERLIO
USE_PERL_ATOF
Built under freebsd
Compiled at Dec 11 2023 18:41:09
%ENV:
PERL5LIB="/home/cpansand/.cpan/build/2023122216/Test-MockModule-v0.177.0-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Test-MockModule-v0.177.0-0/blib/lib:/home/cpansand/.cpan/build/2023122216/LWP-Online-1.08-0/blib/arch:/home/cpansand/.cpan/build/2023122216/LWP-Online-1.08-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Email-Stuffer-0.020-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Email-Stuffer-0.020-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Email-MIME-1.953-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Email-MIME-1.953-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Email-MessageID-1.408-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Email-MessageID-1.408-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Email-MIME-Encodings-1.317-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Email-MIME-Encodings-1.317-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Email-MIME-ContentType-1.028-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Email-MIME-ContentType-1.028-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Data-Validate-IP-0.31-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Data-Validate-IP-0.31-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Data-Validate-Email-0.06-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Data-Validate-Email-0.06-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Data-Validate-Domain-0.15-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Data-Validate-Domain-0.15-0/blib/lib:/home/cpansand/.cpan/build/2023122216/Net-Domain-TLD-1.75-0/blib/arch:/home/cpansand/.cpan/build/2023122216/Net-Domain-TLD-1.75-0/blib/lib"
PERL5OPT=""
PERL5_CPANPLUS_IS_RUNNING="9252"
PERL5_CPAN_IS_RUNNING="9252"
PERL5_CPAN_IS_RUNNING_IN_RECURSION="9230,9252"
PERLDOC="-MPod::Perldoc::ToTextOverstrike"
PERL_BATCH="yes"
PERL_CANARY_STABILITY_NOPROMPT="1"
PERL_CPAN_REPORTER_CONFIG="/var/tmp/cpansmoker-1023/2023122216/cpanreporter_000_config.ini"
PERL_EXTUTILS_AUTOINSTALL="--defaultdeps"
PERL_USE_UNSAFE_INC="1"
@INC:
/home/cpansand/.cpan/build/2023122216/Test-MockModule-v0.177.0-0/blib/arch
/home/cpansand/.cpan/build/2023122216/Test-MockModule-v0.177.0-0/blib/lib
/home/cpansand/.cpan/build/2023122216/LWP-Online-1.08-0/blib/arch
/home/cpansand/.cpan/build/2023122216/LWP-Online-1.08-0/blib/lib
/home/cpansand/.cpan/build/2023122216/Email-Stuffer-0.020-0/blib/arch
/home/cpansand/.cpan/build/2023122216/Email-Stuffer-0.020-0/blib/lib
/home/cpansand/.cpan/build/2023122216/Email-MIME-1.953-0/blib/arch
/home/cpansand/.cpan/build/2023122216/Email-MIME-1.953-0/blib/lib
/home/cpansand/.cpan/build/2023122216/Email-MessageID-1.408-0/blib/arch
/home/cpansand/.cpan/build/2023122216/Email-MessageID-1.408-0/blib/lib
/home/cpansand/.cpan/build/2023122216/Email-MIME-Encodings-1.317-0/blib/arch
/home/cpansand/.cpan/build/2023122216/Email-MIME-Encodings-1.317-0/blib/lib
/home/cpansand/.cpan/build/2023122216/Email-MIME-ContentType-1.028-0/blib/arch
/home/cpansand/.cpan/build/2023122216/Email-MIME-ContentType-1.028-0/blib/lib
/home/cpansand/.cpan/build/2023122216/Data-Validate-IP-0.31-0/blib/arch
/home/cpansand/.cpan/build/2023122216/Data-Validate-IP-0.31-0/blib/lib
/home/cpansand/.cpan/build/2023122216/Data-Validate-Email-0.06-0/blib/arch
/home/cpansand/.cpan/build/2023122216/Data-Validate-Email-0.06-0/blib/lib
/home/cpansand/.cpan/build/2023122216/Data-Validate-Domain-0.15-0/blib/arch
/home/cpansand/.cpan/build/2023122216/Data-Validate-Domain-0.15-0/blib/lib
/home/cpansand/.cpan/build/2023122216/Net-Domain-TLD-1.75-0/blib/arch
/home/cpansand/.cpan/build/2023122216/Net-Domain-TLD-1.75-0/blib/lib
/usr/perl5.38.2/lib/site_perl/5.38.2/aarch64-freebsd
/usr/perl5.38.2/lib/site_perl/5.38.2
/usr/perl5.38.2/lib/5.38.2/aarch64-freebsd
/usr/perl5.38.2/lib/5.38.2
.