use strict; use warnings; my %ho = ( '/*' => sub { ++$_[0] }, '*/' => sub { --$_[0] }, ); while ( my $line = ) { my $c; for ( $line =~ /(\/\*|\*\/)/g ) { $c = $ho{$_}($c); warn "error in line $.! closing comment that isnt open\n" if $c < 0; } warn "error in line $.! open comment isnt closed\n" if $c; } __END__ korrekte zeile /* Dies ist ein Test */ define variable abc as character. /* Dies ist ein Test /* */ CODE /* KOMMENTAR /* KOMMENTAR2 */ KOMMENTAR */ CODE /* KOMMENTAR2