perl - 使用 while 循环和 $_ 读取 PDB 文件时出错
问题描述
我对 Perl 不是很熟悉,但我正在尝试让其他人编写的一些旧代码正常工作。代码的目标是在以 file.pdb 结尾的输入文件上运行一个名为 stride 的程序。它应该抓取目录中的所有 .pdb 文件,运行 stride 并创建输出文件。我知道 stride 程序可以独立运行,但是当我尝试运行代码时出现以下错误:“读取 PDB 文件 _file.pdb 时出错”。在其他类似的代码中,我得到更具体的错误“全局符号“$ original_filename”需要显式包名”。我想我已经将问题缩小到代码对 $_ 的使用。我将不胜感激有关此代码为何不再有效以及更新版本的外观的任何帮助。谢谢。(注意,use strict 和 warnings 已被删除,因为它不是原始代码的一部分)。
#!/usr/bin/perl
#use strict;
#use warnings;
while(<>){
chomp;
my $input = "$_"."_file.pdb";
my $output = "$_".".stride";
my $command = "stride "."$input -f"."$output"." -cA";
system($command);
}
解决方案
该短语从命令行中给出的所有文件中while (<>)
读取每一行。
该代码似乎适用于文件名,它们位于 中@ARGV
,因此最简单的更改是
foreach (@ARGV) { ... }
现在$_
在循环体中一次只有一个文件名(或在命令行上提供给程序的任何文件名)。
<>
请参阅 perlop中I/O 运算符中的“空文件句柄”
推荐阅读
- javascript - 如何在 VueJs 中显示我的 url 参数的详细信息?
- javascript - 如何修复else语句未激活
- javascript - 如何从 NodeJs http 代理读取响应正文
- php - Codeigniter - 当您提交的 URI 包含不允许的字符时重定向
- multithreading - 调试器扩展发送线程事件无法更新线程 UI
- javascript - 选择使用特定字体的字符串
- javascript - 是否可以用曲线(S曲线)做范围条形图
- javascript - 是否可以将 HTML5 音频数据读入浏览器 blob?
- amazon-web-services - AWS-ECS - 使用 awsvpc 模式进行自动扩展
- ios - SwiftUI List NavigationLink 框架的问题(高度:CGFloat)