您可以简单地给出子目录中文件的名称。使用正斜杠将目录与子目录分开。
这是您以更现代的方式编写的程序:
use strict;
use warnings;
use autodie;
use feature qw(say);
my $file_name = "path/to/file";
my $new_file_name = "path/to/new/file";
open my $in_fh, "<" $file_name;
open my $out_fh, ">", $new_file_name;
while my $line ( <$in_fh> ) {
print {$out_fh} $line;
}
close $in_fh;
close $out_fh;
use strict;
要求您声明变量,这可以为您节省很多麻烦。例如,您说$foo
on place and $Foo
(with a capital F ) in another。使用use strict;
,Perl 将为您捕获这些错误。my
你用or声明一个变量our
。99% 的时间,您将使用my
.
use warnings;
打开各种警告。例如,您正试图对未定义的变量执行某些操作。
use autodie
在许多情况下会自动终止您的 Perl 脚本。例如,您不能打开或关闭文件。或者,如果磁盘已满,而您的print
语句无法打印到文件中怎么办?
use feature qw(say);
允许您使用say
而不是print
. 该say
命令会自动为您在行尾添加一个 NL,这比听起来方便得多。
- 使用三个参数
open
and close
,并为文件句柄使用变量名。这使得将文件句柄传递给子程序更容易。
- 不需要时不要使用默认值
$_
。使用它有很多问题(我现在不打算讨论。它确实不会增加程序的清晰度,而且很多时候会给你带来麻烦。
close
完成文件时使用。
你应该得到一本关于Modern Perl的好书。例如,在您的程序中,我可以这样做:
use strict;
use warnings;
use autodie;
use feature qw(say);
use File::Copy; # Adds a `copy` command to Perl
use constant { # Adds the concept of a constant to Perl
IN_FILE => 'path/to/file',
OUT_FILE => '/paht/to/new/file',
};
copy IN_FILE, OUT_FILE; # That's it!
无需打开文件。无需使用循环。该copy
命令将为您完成。
这些模块在 Perl 的标准安装中File::Copy
可用。您需要了解它们,以便使用它们。这就是为什么你应该买一本好书并仔细阅读它的原因。
享受 Perl 的乐趣,请学习正确的做事方式。它使 Perl 成为一种更易于使用和学习的语言。