使用perl中的filehandle将STDIN写入文件

时间:2017-11-06 12:44:51

标签: perl stdin filehandle

我刚刚开始学习perl,我正在通过文件句柄。

  1. 我想将STDIN写入文件。我如何使用文件句柄?
  2. 也可以不使用FH吗?
  3. 我试过以下,但从未奏效:

    dic={}
    while True:
    
        user_input = input('ΑΜ, Name: ').lower()
        if user_input == 'q':
            break
        else:
            AM, name = user_input.split(',')
            AM = int(am)
            dic[AM]=name
    
    print(dic)
    print('Dictionary contents')
    for char in sorted(dic):
        print(char, dic[char])
    

    以下是有效的,但我不明白为什么。

    #!/usr/bin/perl
    
    $file = 'File.txt';
    
    open ($fh, '>', $file) or die "Error :$!";
    
    print "Enter blank line to end\n";
    
    while (<STDIN>) {
    
        last if /^$/;
        print "FH: $fh \n";
        print "dollar: $_ \n";
    }
    
    close $fh;* 
    

1 个答案:

答案 0 :(得分:3)

您已打开文件句柄$fh以写入您的文件。您的第二个示例将数据打印到此文件句柄,因此它可以工作:

print $fh "$line\n";

但是您的第一个示例不会打印到$fh,因此输出会转到STDOUT

print "FH: $fh \n";
print "dollar: $_ \n";

为了让您的第一个示例正常工作,您需要打印到正确的文件句柄。

print $fh "FH: $fh \n";
print $fh "dollar: $_ \n";