/ Forside / Teknologi / Udvikling / Perl / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
string modifikation...
Fra : John Doe


Dato : 19-12-00 14:32

jeg ved ikke hvordan jeg kan formulere, men jeg prøver lige..

Jeg vil lave en subrutine som checker et ord, og ændrer nogle af bogstaverne
med deres variable værdier. Hvis for eksampel $a = 'c'; og ordet lyder $ord
= 'adl' vil det blive 'cdl'... altså bogstavet a skiftes ud med $a, altså
bliver det 'c'. hvordan kan den laves??

noget med:

$ord =~ s/(\w)/$($1)/gi; eller lignende?? Denne her virker selvfølgelig
ikke, men andre forslage??




 
 
Lars Balker Rasmusse~ (19-12-2000)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 19-12-00 16:33

"John Doe" <fatih@ofir.dk> writes:
> jeg ved ikke hvordan jeg kan formulere, men jeg prøver lige..
>
> Jeg vil lave en subrutine som checker et ord, og ændrer nogle af bogstaverne
> med deres variable værdier. Hvis for eksampel $a = 'c'; og ordet lyder $ord
> = 'adl' vil det blive 'cdl'... altså bogstavet a skiftes ud med $a, altså
> bliver det 'c'. hvordan kan den laves??
>
> noget med:
>
> $ord =~ s/(\w)/$($1)/gi; eller lignende?? Denne her virker selvfølgelig
> ikke, men andre forslage??

Tæt på, du skal lige have evaluering med, og droppe paranteserne:

$ord =~ s/(\w)/$$1/ge

Jeg ville nok lave en hash med substitionerne i stedet for variable:

%hash = ( 'a' => 'c');
$ord =~ s/(\w)/defined $hash{$1} ? $hash{$1} : $1/ge;
--
Lars Balker Rasmussen "Woo hoo!?"

Peter J. Acklam (19-12-2000)
Kommentar
Fra : Peter J. Acklam


Dato : 19-12-00 16:07

"John Doe" <fatih@ofir.dk> writes:

> Jeg vil lave en subrutine som checker et ord, og ændrer nogle af
> bogstaverne med deres variable værdier. Hvis for eksampel $a =
> 'c'; og ordet lyder $ord = 'adl' vil det blive 'cdl'... altså
> bogstavet a skiftes ud med $a, altså bliver det 'c'. hvordan kan
> den laves??
>
> noget med:
>
> $ord =~ s/(\w)/$($1)/gi; eller lignende?? Denne her virker
> selvfølgelig ikke, men andre forslage??

Mitt forslag...

($a, $d, $l) = qw(x y z);
$ord = 'adl';
$ord =~ s/([a-z])/$$1/egi;

Husk at \w også matcher tall og underline (`_').

Peter

--
$\="\n";$_='The quick brown fox jumps over the lazy dog';print +(split
//)[20,5,24,31,3,36,14,12,31,1,2,11,9,23,33,29,35,15,32,36,7,8,28,29];

Søg
Reklame
Statistik
Spørgsmål : 177547
Tips : 31968
Nyheder : 719565
Indlæg : 6408797
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste