从CGI中的文本文件中读取信息

时间:2016-07-02 21:27:12

标签: perl cgi

我有一个文本文件text1.txt,其中包含:

username
password

如何将这些参数从text1.txt读入我的.cgi脚本?

我使用此代码:

f = open('text1.txt', "r") 
 user = f.readline() 
 pass = f.readline() 
$MAIN_AUTH = 'user':'pass' ;

这不起作用。

如果我直接插入用户并传递它:

$MAIN_AUTH = 'username:password' ;

但是从文本文件中读取它时不起作用。

2 个答案:

答案 0 :(得分:0)

如果您使用readline(),则在两个变量的末尾会有换行符。

因此,如果是Python,则需要调用rstrip(),如果是Perl,则需要chomp()

答案 1 :(得分:0)

您使用的整体逻辑几乎没问题,但语法不是,并且有一些细节。因为你说行$MAIN_AUTH = 'username:password';有效,我假设你有Perl代码。在Python(afaik)中不允许使用$启动变量。

  1. 始终 在您的Perl脚本顶部添加use strict; use warnings 'all';。它会告诉您脚本中最常见的错误。
  2. 提供输入文件的完整路径,因为当您的Apache(或其他人)运行您的cgi脚本时,您无法确定当前目录,并且如果您不在,那么脚本将期望它相对于该工作目录。 t陈述绝对路径。
  3. 检查open的返回代码,看它是否有效。
  4. 从文件中读取一行时,该行的末尾仍然有换行符,因此请将chomp应用于每一行,将其删除以进行进一步处理。
  5. 总而言之,我最终得到了这个:

    #!/usr/bin/env perl
    
    use strict;
    use warnings 'all';
    
    open( my $fh, '<', '/path/to/text1.txt' ) or die "Cannot open file: $!\n";
    my ($user, $pass) = (<$fh>, <$fh>);  # read first two lines
    chomp($user, $pass);                 # strip off trailing "\n" from both
    close($fh);
    
    my $MAIN_AUTH = "$user:$pass";
    
    print "'$MAIN_AUTH'\n";
    

    输出:

    'username:password'