arrays - 将数组与引用数组中的值匹配 - Perl

标签 arrays perl date reference dereference

我有以下数组引用数组:

my @holidays = [[2012,'01','02'],[2012,'01','16'],[2012,'02','20'],[2012,'04','16'],[2012,'05','28'],[2012,'07','04'],[2012,'09','03'],[2012,'10','08'],[2012,'11','12'],[2012,'11','22'],[2012,'12','25']];

哪些是 2012 年 IRS 认可的法定假日。我想将数组 @dueDate 与该数组中的值相匹配,如果存在则返回 1 或 true。
    while ($holidays[@dueDate]){
        print ("Found Holiday \t join('-',@dueDate)");
        @dueDate = Add_Delta_Days(@dueDate, 1);
        if ( Day_of_Week(@dueDate) > 5){
            @dueDate = Monday_of_Week((Week_Number(@dueDate)+1), $dueDate[0]);
        }
    }

我目前对此的尝试是 - while 语句的条件永远不会为真。我尝试了几种不同的引用和取消引用假期组合,但都无济于事。

最好的方法是在 while 语句中操作评估,以便当 @dueDate 在我上面的数组中包含日期时执行块。

注意:@dueDate 是一个 Date::Calc 标准数组 - (Year, Month, Day)

最佳答案

这应该让你走上正轨。我在您的代码中看到了两个问题 - 数组数组的外部应该有正常的括号,并使用 ~~ 运算符来比较数组的相等性。

my @holidays = ([2012,'01','02'],[2012,'01','16'],[2012,'02','20'],[2012,'04','16'],  
[2012,'05','28'],[2012,'07','04'],[2012,'09','03'],[2012,'10','08'],[2012,'11','12'], 
[2012,'11','22'],[2012,'12','25']);
my $i;
my @duedate = [2012, '01', '02'];

for ($i = 0; $i < @holidays; $i++)
{
    if (@holidays[$i] ~~ @duedate)
    {
        print "matched!!";
    }
}

关于arrays - 将数组与引用数组中的值匹配 - Perl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11004482/

相关文章:

arrays - malloc 二维数组的另一种方法?

JavaScript:对数组元素进行排序,其中 "truthy"字段值排在前面

perl:使用 Getopt::Long 设置 Class::Struct 字段?

javascript - 为什么我在 Javascript 中从日期开始的小时数是错误的?

java - "Java Date() returns date in UTC"- 它到底是什么意思?

Ruby 数组删除于

java - 如何让我的数组多次替换某个值?

perl - perl中直接替换或者匹配替换

perl - 你能在 PL/Perl 中使用库吗

java - 在 CN1 上获取没有时间的当前日期