diff --git a/packages/chck_modules_version.sh b/packages/chck_modules_version.sh
index 7ab6e6eebd84c7248b0936ea818ec7d8133bd443..07a4ea28a7620218b43407fc5ab7248918bb72d1 100755
--- a/packages/chck_modules_version.sh
+++ b/packages/chck_modules_version.sh
@@ -1,11 +1,18 @@
 #!/bin/bash
 #
-# Script obtain Perl package version
+# The script automatically obtain Perl modules and their local version
+# in set directory (recursively)
 #
-#modules=(LWP::Protocol::https)
-modules=(SOAP::Lite SOAP::Transport::HTTP DBI DBD::mysql Format::Human::Bytes Sys::Syslog File::Basename Net::CIDR::Lite DateTime Getopt::Std Switch IO::Socket::SSL MIME::Base64 Crypt::X509 Carp)
 
-for module in ${modules[@]}
+if [[ -z $1 || ! -d $1 ]]; then
+	echo "Usage: ${0##*/} <directory>"
+	exit 1
+fi
+
+modules_file="/tmp/warden-server-modules.txt"
+sed '/^use [A-Z]/!d; /Warden/d' `find $1 -type f` 2>/dev/null | cut -f 2 -d " " | sed 's/;//' | sort -u > $modules_file
+
+for module in $(<$modules_file);
 do
 	perl -e "eval { require $module; }; if (\$@) { print \"$module: version not found\n\"; } else { print \"$module >= \$$module::VERSION\n\"}"
 done