perl – 打开位于同一目录中的文件时出错

前端之家收集整理的这篇文章主要介绍了perl – 打开位于同一目录中的文件时出错前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚开始学习Perl,我遇到了与打开与我的程序位于同一目录中的文件有关的问题.

#!/usr/bin/perl -w

$proteinfilename = 'NM_021964fragment.pep';

open(PROTEINFILE,$proteinfilename) or die "Can't write to file '$proteinfilename' [$!]\n";

$protein = <PROTEINFILE>;

close(PROTEINFILE);

print "Essa é a sequência da proteína:\n";
print $protein,"\n";

exit;

当我指定文件的目录时,从’NM_021964fragment.pep’更改为’/Users/me/Desktop/programa/NM_021964fragment.pep’,程序可以正常工作.但是,即使没有我指定目录,它仍然无法工作,因为程序和文件在同一个文件夹中?

解决方法

如果您正在进行简单的文件读取,则可以使用<>钻石运算符为简单起见

use strict;
use warnings;

my $protein = <>;
print "Essa é a sequência da proteína:\n";
print "$protein\n";

并使用如下脚本:

perl script.pl NM_021964fragment.pep

这将强制您使用正确的路径,假设您在运行脚本时使用选项卡自动完成.

使用命令行参数这种方式有点不安全,因为可以通过不受保护的打开命令执行任意代码.您可以使用模块ARGV::readonly来防止此类事件.或者只是简单地使用代码本身,它很简单:

for (@ARGV){
   s/^(\s+)/.\/$1/;    # leading whitespace preserved
   s/^/< /;            # force open for input
   $_.=qq/\0/;         # trailing whitespace preserved & pipes forbidden
};

猜你在找的Perl相关文章