Ett litet demonstrationsscript som beskriver principen:
#!/usr/bin/perl -w
#use POSIX qw(locale_h);
#setlocale(LC_ALL, "swedish")
# or die "Unable to set locale.";
use locale;
use strict;
my $test = 'åäö';
if ($test =~ /^[[:lower:]]/) {
print "$test\n";
print "Lower case!\n";
print "Changing ...\n";
$test = ucfirst($test);
print "$test\n";
}
POSIX och locale används för att Perl skall känna igen våra svenska tecken. Argumentet "swedish" kan variera mellan olika system.
Prova först med att köra utan de tre rader som är bortkommenterade (de behövs inte på Win32-maskiner, i.a.f. inte med ActivePerl, eller på Unix-maskiner som är rätt konfigurerade för svenska förhållanden). Känner inte Perl igen våra svenska tecken så provat att aktivera dessa tre rader. Om du gör det senare och scriptet dör med felmeddelandet "Unable to set locale" så innebär det att du måste prova något annat än "swedish" som argument. Alternativ att prova kan t.ex. vara "sv", "sv_SE", "sv_SE.ISO8859-1".
Följande är funktionerna du frågar efter:
$test =~ /^[[:lower:]]/
Testar om första bokstaven i strängen $test är liten. Returnerar sant i så fall, annars falskt.
$test = ucfirst($test);
Om första bokstaven är liten så gör denna inbyggda funktion så att den blir stor.
Hjälpte det dig något? :)
------------------
Robban < robban@lipogram.com >