use strict; use Data::Dumper ; my %defines; my $flag_in_define = 0; my $name; MAIN_LOOP: while () { if (m/^\.define (.*)/) { $flag_in_define = 1; $name = $1; next MAIN_LOOP; } if (m/^\.\./) { $flag_in_define = 0; next MAIN_LOOP; } if ($flag_in_define) { chomp; $defines{$name} .= $_; next MAIN_LOOP; } } print Dumper(\%defines); __DATA__ rem ------------------------ book_tab variables --------------------- .rem .declare book_no a13 .declare l_code a10 .declare l_booking a12 .set page_no 1 .set first "N" .set no_more_clauses "N" #dt 1 1 80 # #dt 2 1 6 9 48 50 61 63 76 80 80 # .define loktabs loc_table book_tab, book_hazmat, custdata2, edit_table, book_rates, print_table in share update mode .. .define get_input select key, key1, key2, passkey3, passkey4, print_name into input_booking_seq, fax_header, file_no, input_print_rates, myNoteId, print_name from ed_table where ed_table.tag = 'BOOK' and ed_table.key = 'PRINT' and ed_table.user_id = user .. .define get_user_info select user_loc,user_name, user_company, into user_location, user_name, user_company, from sec_header where user_id = lower(substr(user,5,10)) .. .execute lok_tabs .execute get_user_info