PERL環境チェック

perl02  

PERLのバージョン

$ver = `perl -e "print $]"`;
$ver2 = $^V;

print "$ver($ver2)"; # 5.030003(v5.30.3)

 

PERLのパス

$all_p_path = $ENV{PATH}; # /usr/local/bin:/usr/bin:/bin
$perl_path = $^X; #/usr/local/bin/perl

 

利用可能な全てのライブラリのパス

foreach my $path (@INC) {
  print "$path<br>\n";
}

 

PERLモジュールのバージョンチェック

PERLモジュールの有無とバージョンチェックするスクリプト。見た目は適当。

 

my @modules = qw(
	CGI
	Jcode
	FindBin
	Image::Magick
	HTML::Template
	File::Copy
	File::Basename
	File::Path
	Encode
	utf8
	LWP
	LWP::Simple
	LWP::UserAgent
	HTTP::Request::Common
	Mail::POP3Client
	Net::FTP
	Net::SMTP
	Net::HTTP
	DBI
	XML::Simple
	XMLRPC::Lite
	HTML::LinkExtor
	Date::Calc
	XML::RSS::Parser
	Template::Toolkit
	Text::Diff
	CGI::Session
	CGI::Cookie
	JSON::XS
	JSON::PP
	JSON
	JSON::MaybeXS
);

print "<table width='500' border='1' cellpadding='5'>\n";
print "<tr><td width='350'>モジュール名</td><td width='150'>バージョン</td></tr>\n";

foreach my $module (@modules) {
	my $version = eval "require $module; \$${module}::VERSION";
	if ($@) {
		print "<tr><td>$module</td><td>利用できません</td></tr>\n";
	} else {
		print "<tr><td>$module</td><td>(Ver. $version)</td></tr>\n";
	}
}

print "</table>";

 

 perl_modules_ss 

 

Sendmailのパス

my @possible_paths = ('/usr/sbin/sendmail', '/usr/lib/sendmail', '/usr/local/sbin/sendmail', '/usr/local/lib/sendmail');

my $sendmail_path;

foreach my $path (@possible_paths) {
  if (-x $path) {
    $sendmail_path = $path;
    last;
  }
}

if ($sendmail_path) {
  print "Sendmailのパス: $sendmail_path\n";
} else {
  print "Sendmailは利用できません。\n";
}

 

スクリプトのパス

use FindBin;
$script_dir = $FindBin::Bin;

 

環境変数

 

print "<table border=1>\n";
for $key ( sort keys %ENV ) {
    print "<tr>\n";
    print "<td><code>${key}</code></td><td><code>$ENV{$key}</code></td>\n";
    print "</tr>\n";
}
print "</table>\n";

 

OSを調べる

$os = $^O;
print $os;

 

$^Oの値 説明
MacOS  MacOS
MSWin32 Windows 全般
os2 OS/2
VMS VMS
epoc EPOC OS
NetWare NetWare
symbian Symbian OS
dos MS-DOS
cygwin cygwin
linux Linux
freebsd FreeBSD
solaris Solaris
Unix Unix
darwin Mac OS X
CentOS Linux

 

 

Hostの取得(SSL含む)

$site = $ENV{'REQUEST_SCHEME'} . "://" . $ENV{'HTTP_HOST'} . "/";

 

URLのパス部分を取得

$path = $ENV{'REQUEST_URI'};

 

https://example.com/test/page?param=value にアクセスすると、$ENV{'REQUEST_URI'} の値は /test/page?param=value となる。

 

アクセス中のURLを取得

$url = $ENV{'REQUEST_SCHEME'} . "://" . $ENV{'HTTP_HOST'} . $ENV{'REQUEST_URI'};

 

URLをディレクトリまで取得するにはファイル名やパラメーターを正規表現で削除する。
最後のスラッシュ以降の部分を削除

$url = $ENV{'REQUEST_SCHEME'} . "://" . $ENV{'HTTP_HOST'} . $ENV{'REQUEST_URI'};
$url =~ s|/[^/]*$||;

 

# https://example.com/test