关于正则表达式的问题

对去下面的文档:
/*<Begin_comment>
  Author: ABC
  Version: 1.0
  blabla
<End_comment>*/
.............

我想提取出<Begin_comment> 和<End_comment>之间的文档,并打印到一个文档上。
if (/<Begin_comment>(.*)<End_comment>/si){
  print $fileout "$1";
}
但是程序运行时,报错uninitialized value in concatentation(.),不知道是为什么,希望大家能帮忙解答一下

作者: potato1234   发布时间: 2011-06-12

貌似你这逻辑不行

作者: getline   发布时间: 2011-06-12

Perl code
while(<DATA>)
{
    if (/<Begin_comment>/ .. /<End_comment>/)
    {
          push @arr,$_;
    }
}
shift @arr;
pop   @arr;

for(@arr)
{
    print $fileout;
}

__DATA__
/*<Begin_comment>
  Author: ABC
  Version: 1.0
  blabla
<End_comment>*/

作者: getline   发布时间: 2011-06-12

好的。我试一下。好像是我写的程序是关于单行匹配的,而我要做的是多行匹配

作者: potato1234   发布时间: 2011-06-12