%channel_db_files = ( 'ch1' => { '00010' => '/foo/oradata/bar/foodb-lob01.dbf', '00004' => '/foo/oradata/bar/foodb-data02.dbf', '00007' => '/foo/oradata/bar/undotbs02.dbf' }, 'ch2' => { '00003' => '/foo/oradata/bar/tools01.dbf', '00006' => '/foo/oradata/bar/foodb-index11.dbf', '00002' => '/foo/oradata/bar/undotbs01.dbf' }, 'ch3' => { '00005' => '/foo/oradata/bar/xml01.dbf', '00009' => '/foo/oradata/bar/foodb-index01.dbf', '00001' => '/foo/oradata/bar/system01.dbf', '00008' => '/foo/oradata/bar/foodb-data01.dbf' } ); #### #----------------8<---------------- #!/usr/bin/perl use strict; use Data::Dumper; my %channel_db_files = (); my $RMAN_NO_OF_CHANNELS = 3; my $RMAN_RUN_CH_NAME = 'ch'; LOOP: while () { chomp; foreach my $i ( 1 .. ${RMAN_NO_OF_CHANNELS} ) { if ( /$RMAN_RUN_CH_NAME$i/ ) { while () { chomp; if ( /^input datafile/ ) { my ($file_number, $file_name) = $_ =~ /number=(\d+)\s+name=(.*)/; $channel_db_files{"ch$i"}{$file_number} = $file_name; } else { redo LOOP; } } } } } print Dumper \%channel_db_files; __DATA__ Starting backup at 2011-05-31 02:00:05 channel ch1: starting compressed full datafile backup set channel ch1: specifying datafile(s) in backup set input datafile file number=00010 name=/foo/oradata/bar/foodb-lob01.dbf input datafile file number=00004 name=/foo/oradata/bar/foodb-data02.dbf input datafile file number=00007 name=/foo/oradata/bar/undotbs02.dbf channel ch1: starting piece 1 at 2011-05-31 02:00:06 channel ch2: starting compressed full datafile backup set channel ch2: specifying datafile(s) in backup set input datafile file number=00003 name=/foo/oradata/bar/tools01.dbf input datafile file number=00006 name=/foo/oradata/bar/foodb-index11.dbf input datafile file number=00002 name=/foo/oradata/bar/undotbs01.dbf channel ch2: starting piece 1 at 2011-05-31 02:00:06 channel ch3: starting compressed full datafile backup set channel ch3: specifying datafile(s) in backup set input datafile file number=00008 name=/foo/oradata/bar/foodb-data01.dbf input datafile file number=00009 name=/foo/oradata/bar/foodb-index01.dbf input datafile file number=00005 name=/foo/oradata/bar/xml01.dbf input datafile file number=00001 name=/foo/oradata/bar/system01.dbf channel ch3: starting piece 1 at 2011-05-31 02:00:07 channel ch1: finished piece 1 at 2011-05-31 02:34:54 #----------------8<---------------- #### ----- ---------------------------------------- File# File Name ----- ---------------------------------------- 1 /foo/oradata/bar/system01.dbf 2 /foo/oradata/bar/undotbs01.dbf 3 /foo/oradata/bar/tools01.dbf 4 /foo/oradata/bar/foodb-data02.dbf 5 /foo/oradata/bar/xml01.dbf 6 /foo/oradata/bar/foodb-index11.dbf 7 /foo/oradata/bar/undotbs02.dbf 8 /foo/oradata/bar/foodb-data01.dbf 9 /foo/oradata/bar/foodb-index01.dbf 10 /foo/oradata/bar/foodb-lob01.dbf