procedure x (x in varchar2, y in number) is BEGIN ... END; function m (z in number) is BEGIN ... END; #### procedure x (x in varchar2, y in number); function m (z in number); #### #!/arudev/bin/perl use strict; my $file = shift or die "must supply body file"; open F, $file; my $text = join '', ; my $regex = '(procedure|function).*?\(.*?\)'; while ($text =~ /$regex/gs) { print "*$1*",$/; }