有一个SQL Server的环境配置文件如下,该脚本将配置环境的参数和值读入perl哈希串,然后在perl内可以做各种处理,当然本例中只打印参数和值。
==配置文件 Env_Var.txt==
SERVER = GDCPW1169
INSTANCE = GDCPW1169
SQL_VER = 2005
BIN_DIR = G:/mssql2005/MSSQL.1/MSSQL/Binn
SCRIPT_LOG = G:/mssql2005/log
DATA_FILE_LOCATION = I:/INTEL_DATA
LOG_FILE_LOCATION = J:/INTEL_LOG
DUMP_DIR = H:/INTEL_DB_DUMPS/GDCPW1169
TRAN_DIR = H:/INTEL_TRAN_DUMPS/GDCPW1169
AUDIT_ARCHIVE_DIR = H:/INTEL_DB_DUMPS/GDCPW1169/AUDIT_ARCHIVE
==perl脚本file_input3.pl==
#!/usr/bin/perl -w
#
# file_input3.pl
# Handle input from a file
use strict;
my ($file_name,
$arg,
$line,
$key,
$value,
@array1,
%hash);
$arg = shift(@ARGV);
while ($arg)
{
if ($arg eq "-f" or $arg eq "-F")
{
$file_name = shift(@ARGV);
}
$arg = shift(@ARGV);
}
open my $FILE,'<',"$file_name" or die "Cannot open $file_name: $!";
foreach $line (<$FILE>){
$line =~ s/^/s*|/s*$//g; #删除前后空格
@array1=split(/=/,$line); #将等号作为数组的分隔符
$array1[0] =~ s/^/s*|/s*$//g;
$array1[1] =~ s/^/s*|/s*$//g;
$hash{$array1[0]} = $array1[1]; #给哈希串赋值
}
close $FILE;
while (($key,$value) =each %hash){
print "$key => $value/n";
}
==执行结果==
C:/temp1>perl file_input3.pl -f Env_Var.txt
DATA_FILE_LOCATION => I:/INTEL_DATA
AUDIT_ARCHIVE_DIR => H:/INTEL_DB_DUMPS/GDCPW1169/AUDIT_ARCHIVE
BIN_DIR => G:/mssql2005/MSSQL.1/MSSQL/Binn
TRAN_DIR => H:/INTEL_TRAN_DUMPS/GDCPW1169
DUMP_DIR => H:/INTEL_DB_DUMPS/GDCPW1169
INSTANCE => GDCPW1169
LOG_FILE_LOCATION => J:/INTEL_LOG
SERVER => GDCPW1169
SCRIPT_LOG => G:/mssql2005/log
SQL_VER => 2005