不能在第12行使用未定义的值作为符号引用

时间:2015-02-07 21:59:56

标签: perl

所以我试图将自己作为一种新语言教我自己。我发现学习一门新语言的最佳方法是为自己设定一个项目。这个项目是一个文本游戏。我今晚刚刚开始。我需要从用户那里获取输入,然后将其写入文件。由于我将一遍又一遍地这样做,我认为最好将代码放在子程序中,如下所示。

唯一的问题是我不断收到以下错误:     不能在book1.pl第12行使用未定义的值作为符号引用,<>第2行。

非常感谢任何帮助:)

#!/usr/bin/perl

use 5.010;
use strict;
use warnings;

my $filename = 'save.txt';
sub open_save{
    open(my $fh, '>', $filename) or die "Could not open file '$filename' $!";
}
sub close_save{
    close my $fh;
}
print "Welcome to the 40K universe\nWhat is your first name?";
my $first_name = <>;
print"What is your surname?";
my $surname = <>;
my $name = $first_name . $surname;
open_save();
print "$name";
close_save();

1 个答案:

答案 0 :(得分:3)

my创建并返回一个新变量。您将此新变量传递给close,这非常合理地抱怨它不是文件句柄。

#!/usr/bin/perl

use 5.010;
use strict;
use warnings;

sub open_save {
    my ($filename) = @_;
    open(my $fh, '>', $filename)
       or die "Can't open file '$filename': $!\n";
    return $fh;
}

sub close_save {
    my ($fh) = @_;
    close $fh;
}

{
    my $filename = 'save.txt';
    ...
    my $fh = open_save($filename);
    print $fh "$name\n";
    close_save($fh);
}