Hej jag har en sak som jag undrar lite över.
Om jag gör ett formulär där jag vill att
någon skall fylla i sitt förnamn och i en annan ruta sitt efternamn.
Om denna person som fyller i ett namn
text Putte men glömmer att ha stor bokstav på p så det blir så här putte
hur gör man för att antingen medela persnen att första bokstaven är liten eller att man gör så att perl programmet ändrar på det själv? Någon som vet?
Cgi input type text och sånt!
2 svar · 355 visningar · startad av nordan
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 >
Kom på att [:lower:] är ny i.o.m. Perl 5.6.0. Använder du en äldre version än så får du modifiera scriptet lite. T.ex. ersätta:
if ($test =~ /^[[:lower:]]/) { ...
med:
if (ucfirst($test) ne $test) { ...
------------------
Robban < robban@lipogram.com >