想要从perl中的文本文件传递enviormnet值

时间:2017-02-01 13:17:09

标签: perl

我有以下代码,我们在脚本中手动传递ENVIRONMENT和ENV NUMBER的值。我想维护一个脚本,并从一些文本文件传递ENVIRONMENT名称及其值的所有值。所以我将来不需要更新它。

任何人都可以帮我解决这个问题吗?

我已经减少了我的代码,只保留了我面临问题的部分。我想从一些文本文件中获取所有这些输入(UAT / PET / QA / SIT及其env编号)。我不希望它在脚本中被硬编码。

if ( $environment ne "" || $environment ne "Select" ) {
   print "<td> <select name=environment onchange=document.form1.submit()>";
   print "<option selected value=$environment>$environment</option> ";

   print "<option value=UAT>UAT</option> ";
   print "<option value=PET>PET</option> ";
   print "<option value=QA>QA</option> ";
   print "<option value=SIT>SIT</option> ";
}
print "</tr>";


if ( $environment eq "" || $environment eq "Select" ) {
   print "<td> <INPUT TYPE=text disabled NAME=product size=21 > </td>";
}
else {
   if ( $environment eq "MPET" ) {
      print "<td> <select name=product onchange=document.form1.submit()>";
      print "<option selected value=$product>$product</option> ";
      print "<option value=1>1</option> ";
      print "<option value=2>2</option> ";
      print "<option value=3>3</option> ";
      print "<option value=4>4</option> ";
   }
   if ( $environment eq "QA" ) {
      print "<td> <select name=product onchange=document.form1.submit()>";
      print "<option selected value=$product>$product</option> ";
      print "<option value=1>1</option> ";
      print "<option value=2>2</option> ";
   }

   if ( $environment eq "UAT" ) {
      print "<td> <select name=product onchange=document.form1.submit()>";
      print "<option selected value=$product>$product</option> ";
      print "<option value=1>1</option> ";
      print "<option value=3>3</option> ";
      print "<option value=4>4</option> ";
   }
   if ( $environment eq "SIT" ) {
      print "<td> <select name=product onchange=document.form1.submit()>";
      print "<option selected value=$product>$product</option> ";
      print "<option value=1>1</option> ";
   }
   print "<input type=hidden name=environment value='$environment'>";
   print "</td> ";
}

提前致谢。

1 个答案:

答案 0 :(得分:2)

如果您想将它们保存在文件中,我建议使用INI样式的配置文件,然后使用Config::Tiny在需要时读取数据。您可以编写自己的自定义格式和检索功能,但Config::Tiny非常易于使用,并且可以在需要时轻松写入配置文件。此外,INI文件是标准化的,所以也是如此。

这是INI文件示例:

[variables]
ORACLE_HOME=/ora/11.2.0.3
LD_LIBRARY_PATH=/ora/11.2.0.3/lib

...和代码:

use warnings;
use strict;

use Config::Tiny;

my $file = 'env.ini';

my $conf = Config::Tiny->read($file);

$ENV{ORACLE_HOME} = $conf->{variables}{ORACLE_HOME};
my $LD_LIBRARY_PATH = $conf->{variables}{LD_LIBRARY_PATH};

print "ora home: $ENV{ORACLE_HOME}\n";
print "lib path: $LD_LIBRARY_PATH\n";

...和输出:

ora home: /ora/11.2.0.3
lib path: /ora/11.2.0.3/lib

您可能希望在设置变量时进行一些完整性检查,以便在有错误或不正确的情况下,您可以退出应用程序之前到达意外破坏的部分代码。