#!/usr/bin/perl use 5.010; use strict; use warnings; while (my $line = ) { last if $line =~ /__END__/; chomp($line); print uppercase_special($line), "\n"; } sub uppercase_special { my $string = shift; my $neu = substr($string,0,1); for (my $z = 1; $z <= length($string); $z ++) { $neu .= ( substr($string,$z-1,1) =~ /[^a-z0-9]/ ? uc(substr($string,$z,1)) : substr($string,$z,1) ); } return $neu; } __DATA__ öl im _((überfluß wie ist das so? Das ist _astrophysik! Mag sein, dass es ;;;perl ist. __END__ ergibt: öL Im _((üBerfluß wie Ist Das So? DAs Ist _Astrophysik! MAg Sein, Dass Es ;;;Perl Ist.