############################################################################### # ModuleChecker.pm # # $Date: 01 Sep 2026 $ # ############################################################################### # YaBBForum: Yet another Bulletin Board # # Open-Source Community Software for Webmasters # # Version: YaBBForum 3.2 # # Packaged: 01 Sep 2026 # # Distributed by: https://yabbforum.nz # # =========================================================================== # # Copyright (c) 2000-2026 YaBBForum (yabbforum.nz) - All Rights Reserved. # # Software by: The YaBBForum Development Team # # with assistance from the YaBBForum community. # ############################################################################### use strict; #use warnings; use CGI::Carp qw(fatalsToBrowser); use English qw(-no_match_vars); our $VERSION = '3.2'; our $modulecheckerpmver = 'YaBBForum 3.2'; our ( $action, $yymain, %modulecheck ); if ( $action eq 'detailedversion' ) { return 1; } my $script_root = $ENV{'SCRIPT_FILENAME'}; if ( !$script_root ) { $script_root = $ENV{'PATH_TRANSLATED'}; } my ( $checker_output, $i ); my @modules = qw(Digest::MD5 Time::HiRes Time::Local DateTime DateTime::TimeZone File::Find CGI Net::SMTP Net::SMTP::TLS Net::DNS Mail::CheckUser Compress::Zlib IO::Compress::Bzip2 JSON::PP Archive::Tar Archive::Zip MIME::Lite LWP::UserAgent HTTP::Request::Common IO::Socket::SSL IO::Socket::INET Digest::HMAC_MD5 Carp bytes integer English URI::Escape); @modules = sort @modules; foreach my $module ( @modules ) { eval "require $module;"; my $dont_continue_setup = q{}; if ($EVAL_ERROR) { if ( $module eq 'Digest::MD5' ) { $dont_continue_setup = 1; } $i = $modulecheck{'8'}; my $e = $EVAL_ERROR; # IE does display the @INC path it in one line :-( # If you use IE and don't like what you see, remove the # comment (#) in next line. # $e =~ s/\//\\/g; $checker_output .= qq~ $module $modulecheck{'5'}

$e $modulecheck{"$module"} ~; } else { if ( $module eq 'DateTime::TimeZone' ) { my $version = $module->VERSION; my $myversion = ( "%s %s is\n %s\n", $module, ( $version ? $version : '' ), ); $checker_output .= qq~ $module $modulecheck{'6'} $modulecheck{'DateTime::TimeZone2'} $myversion ~; } else { $checker_output .= qq~ $module $modulecheck{'6'} ~; } } } my $perlver = $]; if ( $perlver gt '5.009' ) { $perlver = $^V; } if ( $script_root !~ /ModuleChecker[.]\w+$/xsm ) { $yymain .= qq~
~ . ( $i ? qq~~ : q{} ) . qq~ $checker_output
$modulecheck{'1'}
$modulecheck{'2'}
$modulecheck{'perlver'}: $perlver
$modulecheck{'7'} $i
$modulecheck{'3'} $modulecheck{'4'}
~; } 1;