[英]Why I can not open files to read or write in perl?
我正在使用 vs 代码学习 Perl。 我正在尝试打开 file.pep 并从中读取,但每次我发现找不到路径。 我已将 protein.pep 和 code.pl 放在同一个文件夹中。
这是 protein.pep 文件
MNIDDKLEGLFLKCGGIDEMQSSRTMVVMGGVSGQSTVSGELQD
SVLQDRSMPHQEILAADEVLQESEMRQQDMISHDELMVHEETVKNDEEQMETHERLPQ
GLQYALNVPISVKQEITFTDVSEQLMRDKKQIR
使用路径 D:\bioinformatics\protein.pep
这是我的 code.pl 文件
#!/usr/bin/perl -w
$proteinfilename = 'protein.pep';
open(PROTEINFILE, $proteinfilename)or die "Can't open '$seq': $!";
# First line
$protein = <PROTEINFILE>;
# Print the protein onto the screen
print "\nHere is the first line of the protein file:\n\n";
print $protein;
# Second line
$protein = <PROTEINFILE>;
# Print the protein onto the screen
print "\nHere is the second line of the protein file:\n\n";
print $protein;
# Third line
$protein = <PROTEINFILE>;
# Print the protein onto the screen
print "\nHere is the third line of the protein file:\n\n";
print $protein;
它的路径是 D:\bioinformatics\code.pl
我得到这个 output “系统找不到指定的路径。”
您的代码中有:
$proteinfilename = 'protein.pep';
open(PROTEINFILE, $proteinfilename)or die "Can't open '$seq': $!";
首先,更改错误消息以告诉您open
需要哪个文件:
open(PROTEINFILE, $proteinfilename) or die "Can't open '$proteinfilename': $!";
你只给open
相对路径名。 我敢打赌它适用于完整的路径名:
$proteinfilename = 'D:\\bioinformatics\\protein.pep';
open(PROTEINFILE, $proteinfilename) or die "Can't open '$proteinfilename': $!";
如果您仍然有问题,请发布程序的实际 output。
我猜问题出在您的 IDE 和当前工作目录上。 程序不会自动在您存储它的目录中运行。 您可以使用 Perl 随附的Cwd
模块来查看您的 IDE 从哪里开始:
use Cwd qw(getcwd);
print "I'm in " . getcwd() . "\n";
如果您希望程序在工作时位于特定目录中,
chdir $some_directory or die "Could not change to '$some_directory': $!";
您可以选择该目录与程序的目录相同。 Perl 附带的FindBin
模块可以方便地告诉您它在哪里:
use FindBin;
chdir $FindBin::Bin;
Perl 有各种更好的做事方式,尽管它几乎支持你 30 年前可以做的所有事情。 表示文件模式的三个参数open
更安全一些。 而且, Perl v5.36 是关于在您指定use v5.36
时禁用用户定义的裸字文件句柄,因此请养成使用词法文件句柄的习惯。
open my $protein_fh, '<', $proteinfilename or die "Can't open '$proteinfilename': $!";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.