模式匹配多行怎么实现?

模式匹配多行怎么实现?

模式匹配多行怎么实现?
现在假如有这样一个文件test.txt:
BEGIN HEADER
  CharacterSet "CP936"
  ExportingTool "Ascential DataStage Export"
  ToolVersion "4"
  ServerName "10.102.9.74"
  ToolInstanceID "SPDBODS"
  MDISVersion "1.0"
  Date "2008-03-27"
  Time "09.08.30"
  ServerVersion "7.5.2"
END HEADER
BEGIN DSJOB
  Identifier "DS_DSK_HIS_TBCURRENTS"
  DateModified "2008-02-29"
  TimeModified "15.32.04"
  BEGIN DSRECORD
   Identifier "ROOT"
   DateModified "1899-12-30"
   TimeModified "00.00.01"
   OLEType "CJobDefn"
   Readonly "0"
   Name "DS_DSK_HIS_TBCURRENTS"
...



我要截取以“BEGIN HEADER”开头,以“END HEADER”结尾的这部分内容,这模式匹配该怎么实现?(我试过先把整个文本读到一个数组里,再把这个数组合并成一个字符串,再做匹配/^BEGIN HEADER.*END HEADER/,失败了,请教高手...)
谢谢了(msn:yinhui198456@tom.com)
/m 修饰符用于跨行模式匹配
怎么没人回复哦?--这个.
怎么没人回复哦?
这个问题不能实现就是因为有换行符的存在,我打算把文本读到字符串中,然后把所有的\n替换成其它字符(唯一),再做匹配,测试过,是可行的,不过出现一个问题:如果文本中有多个"END HEADER" ,模式匹配会自动查找最后一个,这样不符合我自己的想法,怎么可以指定最近一个"END HEADER"?
if($str=~ m/(BEGIN HEADE.
if($str=~ m/(BEGIN HEADER).*(END HEADER)/s)