Hi!
$string = "<TAG>hallo</TAG>";
for(split(//,$string)) { (/[a-z]/) ? ($output .= uc) : ($output .= lc); }
print $output; # <tag>HALLO</tag>
Ja, funktioniert aber nur, wenn auch garantiert ist, dass vorher genau der invertierte Fall vom Wunschergebnis vorliegt. Ein Ausgangswert von "<Tag>Hallo</Tag>" wuerde jedoch zu "<tAG>hALLO</tAG>" konvertiert werden.
Schlage daher folgendes vor:
#!/usr/bin/perl -w
$string = "<TAG>hallo</TAG>";
$string = uc($string); # all to upper case
$string =~ s/(<.*?>)/lc($1)/eg; # <tags> to lower case
print $string;
Bye, Calocybe