加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 06:15:24 所属栏目:大数据 来源:网络整理
导读:我刚刚开始学习Perl,我遇到了与打开与我的程序位于同一目录中的文件有关的问题. #!/usr/bin/perl -w$proteinfilename = 'NM_021964fragment.pep';open(PROTEINFILE,$proteinfilename) or die "Can't write to file '$proteinfilename' [$!]n";$protein = PR
我刚刚开始学习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 "$proteinn";

并使用如下脚本:

perl script.pl NM_021964fragment.pep

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读