我正在尝试编写一个perl程序:
print "Enter the filename:";
$filename = readline STDIN;
print "Enter the string to be compared";
$string1 = readline STDIN;
为了将这两个输入合二为一,我做了以下几点:
print "Enter the filename and string to be compared:";
my $input1 = readline STDIN;
my @name = split(' ',$input1); //split the input parameters by space
$filename = $name[0];
$string1 = $name[1];
chomp $string1;
这是功能代码,我想知道是否有其他方法可以为此逻辑实现更优化的版本?
谢谢, DD
答案 0 :(得分:5)
这就像你得到的那样优化了。在您确定需要之前,不要试图手动优化代码。鉴于这是等待IO,它无关紧要,因为IO比你在代码中所做的任何事情都慢。
但如果你的意思更多简洁:
print "Enter the filename and string to be compared:";
chomp ( my ( $filename, $string ) = split ' ', <> );
这需要<>
- 这是神奇的文件句柄,并且读取 STDIN或在命令行上指定的文件名。 (类似于grep
/ sed
/ awk
)。
我们将它在空格上,在标量上下文中拆分 - 然后将拆分中的值传递给$filename
和$string
的列表。然后选择剥离换行。
答案 1 :(得分:2)
如果kite来自perl secret
use warnings;
use strict;
print "Enter the filename and string to be compared:";
chomp( my @ar = (~~<>, ~~<> ) );
print @ar;
答案 2 :(得分:0)
尝试使用下面的代码 `comand:perl your_script.pl -file_name'some_file' -string'some_string'
use Getopt::Long;
my ( $file_name, $string );
GetOptions(
'file_name=s' => \$file_name,
'string=s' => \$string,
) or die "Could not parse options";
if($file_name eq $string )
{
print "The file name is the same as the string\n";
}else{
print "Not a match\n";
}