1

如何检查是否定义了变量并使用 perl 正则表达式在数组中搜索两个模式?

$/ = ""; # paragraph mode

__Data__
#SCSI_test         # put this line into  @arrayNewLines      
kdkdkdkdkdkdkdkd
dkdkdkdkdkdkdkdkd
- ccccccccccccccc  # put this line into @arrayNewLines


  while(<FILEREAD>)
  {
      chomp;
      my @arrayOld = split('\n',$_);

      foreach my $i (0 .. $#arrayOld) # using the foreach of index to remove the lines.
      {
            if($arrayOld[$i] =~ /-(.*)/ || /\#(.*)/)
            {
                 my @arrayNewLines = $arrayOld[$i];
                 splice @arrayOld,$i,1;             # remove lines from arrayOld
                 print "@arrayNewLines\n";
            }
                 print "@arrayOld\n";
      }
   }

此代码在将每种类型的 - 或 # 行放入同一 @arrayNewLines 数组时不起作用。它仅适用于第一个 (/-(. )/) 模式,不适用于第二个 (/#(. )/)。我需要它来搜索两种模式并定义 $arrayOld[i] 变量以防止使用 uninitilize 消息。我想定义

4

1 回答 1

0
if($arrayOld[$i] =~ /-(.*)/ || /\#(.*)/)

这不会像您认为的那样起作用,原因与它也不会:

if($x == 1 || 2)

改用这个:

if($arrayOld[$i] =~ /-(.*)/ || $arrayOld[$i] =~ /\#(.*)/)

就像您使用它一样:

if($x == 1 || $x == 2)
于 2012-05-25T23:54:11.780 回答