perl - 为 Perl 脚本传递命令行参数以及来自 STDIN 的输入?

标签 perl stdin command-line-arguments argv

我有一个 Perl 脚本,它同时接受命令行参数和 STDIN

#!/usr/bin/perl -w
use strict;
use warnings;

my $logpath = $ARGV[0];
print "logpath : $logpath\n";

print "Name : ";
my $name = <>;
chomp($name);
print "my name is $name\n";

它不会在标准输入输入处停止。 适用于命令行或标准输入中的任何一种,但不适用于两者。

有什么理由吗?

最佳答案

改变

my $name = <>;

my $name = <STDIN>;

如果@ARGV没有元素,那么菱形运算符将从 STDIN 读取但在您的情况下,由于您通过命令行传递参数, @ARGV不会为空。因此,当您使用菱形运算符<>时要读取名称,将读取在命令行中指定名称的文件的第一行。

关于perl - 为 Perl 脚本传递命令行参数以及来自 STDIN 的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5431023/

相关文章:

linux - Komodo IDE FTP(ASCII,二进制)行尾字符

perl - Perl 加 X Window 中没有事件循环图形?

perl - 如何生成目录中 Perl 模块或脚本的 HTML 摘要?

perl - 比较两个文件,其中一条信息可以灵活

java - Java 命令行参数输出问题

linux - 直bash空参数无法识别

c - 从 stdin 读取时子进程被孤立时的奇怪行为

c - 如何创建将 stdin 重定向到子进程的代理进程?

c - 为什么使用 fgets 从 stdin 读取时会忽略第一个字符串?

python - 将命令行参数转发到 Python 中的进程