数组 – 将数组匹配到引用数组中的值 – Perl

前端之家收集整理的这篇文章主要介绍了数组 – 将数组匹配到引用数组中的值 – Perl前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下数组引用数组:

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

这是IRS在2012年认可的法定假日.我想将数组@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标准数组 – (年,月,日)

解决方法

这应该会让你走上正轨.我在你的代码中看到的两个问题 – 数组数组应该在外部部分有正常的括号,并使用~~运算符来比较数组是否相等.

my @holidays = ([2012,'25']);
my $i;
my @duedate = [2012,'02'];

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

猜你在找的Perl相关文章