gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 02:29:55 25 4
gpt4 key购买 nike

我刚开始学习 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

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

以这种方式使用命令行参数有点不安全,因为可以通过不 protected open 执行任意代码。命令。您可以使用模块 ARGV::readonly 防止此类事情发生。或者干脆使用代码本身,比较简单:
for (@ARGV){
s/^(\s+)/.\/$1/; # leading whitespace preserved
s/^/< /; # force open for input
$_.=qq/\0/; # trailing whitespace preserved & pipes forbidden
};

关于perl - 打开位于同一目录中的文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13779008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com