while ($data_in =~ /(.+?)<\/a>(.+?)<\/b><\/container>(<\?query\?>)??/ig) { { no warnings 'uninitialized'; $data_out = "$2, $1$3 "; } # further processing } #### while ($data_in =~ /(.+?)<\/a>(.+?)<\/b><\/container>(<\?query\?>)??/ig) { if ( defined $3 ) { $data_out = "$2, $1$3 "; } else { $data_out = "$2, $1 "; } # further processing } #### while ($data_in =~ /(.+?)<\/a>(.+?)<\/b><\/container>(<\?query\?>)??/ig) { $data_out = ( defined $3 ) ? "$2, $1$3 " : "$2, $1 "; }