在从<>获取输入之前清除@ARGV?

时间:2019-07-25 06:02:51

标签: perl stdin argv

我注意到@ARGV的内容被定向到<>命令的输入。

如果我要使用<>从键盘获取输入,是否应该事先清除@ARGV?这是唯一的方法吗?

例如:

@ARGV = ();
$input = <>;

@ARGV干扰<>令我感到非常惊讶。这有什么意义?)

1 个答案:

答案 0 :(得分:2)

import { StylesProvider } from "@material-ui/styles"; // ... <Container> <Head> <title>My page</title> </Head> <ThemeProvider theme={theme}> <StylesProvider injectFirst> // added this {/* CssBaseline kickstart an elegant, consistent, and simple baseline to build upon. */} <CssBaseline /> <Component {...pageProps} /> </StylesProvider> </ThemeProvider> </Container> 的意思是<><ARGV>文件句柄是指ARGV中列出的文件的串联。如果@ARGV为空,则其作用类似于@ARGV,这意味着从标准输入中读取。 (这样很神奇。)请参见I/O Operators in perldoc perlopperldoc -f readline

@ARGV = ('-')旨在模拟许多标准输入(如果通过)读取的unix工具(例如<>catsort等)的常见行为。没有参数,否则从命令行上列出的所有文件中读取输入(也将wc作为指令从标准输入中读取)。

如果您只想阅读-,请执行以下操作:

STDIN

...或者,我的偏好:

my $line = <STDIN>;

(请注意,标准输入不一定指键盘。您可以轻松地将其重定向到例如文件:my $line = readline STDIN;