1
如何檢查是否定義了一個變量,並使用perl regex在數組中搜索兩個模式?如何檢查是否定義了一個變量,並使用perl regex在數組中搜索兩個模式?
$/ = ""; # 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]變量以防止使用未初始化的消息。 我想定義
感謝duskwuff,這工作,但我需要擺脫使用未初始化的價值消息 –
@Joseph沃克:duskwuff提供了一個很好的解決方案,其中disjuncts可以在一個單一的正則表達式在未初始化的變量測試後組合(所以你不會獲得這些消息):'if($ arrayOld [$ i] && $ arrayOld [$ i] =〜/ - | \#(。*)/)' – Kenosis