在Perl中使用Grep进行搜索
我有下面的代码。我需要搜索筛选日期中是否存在todaydate。但是,下面的代码不起作用。你能帮个忙吗,我错过了什么在Perl中使用Grep进行搜索,perl,Perl,我有下面的代码。我需要搜索筛选日期中是否存在todaydate。但是,下面的代码不起作用。你能帮个忙吗,我错过了什么 #!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @filterdates={FD=>'08/30/2020',TD=>'08/31/2020'}; my $todaydate='08/30/2020'; if ( grep{/^$todaydate$/} @filterdate
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @filterdates={FD=>'08/30/2020',TD=>'08/31/2020'};
my $todaydate='08/30/2020';
if ( grep{/^$todaydate$/} @filterdates) {
print Dumper ("Found");
}
这里有几个问题
首先,@filterdates
是一个数组变量。但是,FD=>'08/30/2020',TD=>'08/31/2020'
看起来您想将其用作散列
其次,使用列表初始化数组和哈希:
my @filterdates = (FD=>'08/30/2020',TD=>'08/31/2020');
或
您正在使用{…}
初始化数组<代码>{…}提供对匿名哈希的引用。因此,您的数组包含一个类似于散列(0X1234567890AB)
的元素,它永远不会与日期字符串匹配
如果你能更清楚地知道你想做什么,那么我们可能会帮助你解决它
这里有几个问题
首先,@filterdates
是一个数组变量。但是,FD=>'08/30/2020',TD=>'08/31/2020'
看起来您想将其用作散列
其次,使用列表初始化数组和哈希:
my @filterdates = (FD=>'08/30/2020',TD=>'08/31/2020');
或
您正在使用{…}
初始化数组<代码>{…}提供对匿名哈希的引用。因此,您的数组包含一个类似于散列(0X1234567890AB)
的元素,它永远不会与日期字符串匹配
如果您能更清楚地了解您正在尝试执行的操作,那么我们可能可以帮助您修复它。
@filterdates
应该是散列而不是数组(使用单个hashref)?同意。我修改了下面的行my@filterdates={FD=>'08/30/2020',TD=>'08/31/2020'};我的@filterdates=('08/30/2020','08/31/2020');它工作了@filterdates
应该是一个散列而不是一个数组(使用一个hashref)?同意。我修改了下面的行my@filterdates={FD=>'08/30/2020',TD=>'08/31/2020'};我的@filterdates=('08/30/2020','08/31/2020');它成功了
my %filterdates = (FD=>'08/30/2020',TD=>'08/31/2020');