/ 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
Finde antal matches i regexp
Fra : Jens Thomsen


Dato : 16-04-08 08:48

Jeg har en funktion, der tager et regexp som parameter.

Den skal returnere alle resultaterne fra paranteserne, men den ved ikke på
forhånd hvor mange resultater der kan være.

Jeg har hacket lidt [1] men mon ikke det kan gøres renere og skalerbart til
mere end ni resultater?


Bemærk, eksemplet er simplificeret


[1]

sub return_matches ($data, $regexp) {

my $res = $data =~ /$regexp/;

return ($res, $1, $2, $3, $4, $5, $6, $7, $8, $9);
}



 
 
Peter Makholm (16-04-2008)
Kommentar
Fra : Peter Makholm


Dato : 16-04-08 09:33

"Jens Thomsen" <jt@nej.nej> writes:

> Jeg har hacket lidt [1] men mon ikke det kan gøres renere og skalerbart til
> mere end ni resultater?

Læs 'perldoc perlvar' og led efter variablen @- (søg efter
@LAST_MATCH_START).

Det tror jeg rimelig godt beskriver hvordan du løser dit problem.

//Makholm

Flemming Frandsen (16-04-2008)
Kommentar
Fra : Flemming Frandsen


Dato : 16-04-08 13:13

Jens Thomsen wrote:
> mere end ni resultater?
> sub return_matches ($data, $regexp) {
>
> my $res = $data =~ /$regexp/;
>
> return ($res, $1, $2, $3, $4, $5, $6, $7, $8, $9);
> }


Hvad er der nu galt med det her?:

sub return_matches ($data, $regexp) {
return $data =~ /$regexp/;
}

Hint: m// returnerer captures i et array i list context.


Jeg har ofte brugt noget i stil med det her:
my ($protocol, $host, $path) =~ m!^([^:]+)://([^/]+)(.*)$! or die;

Så undgår jeg helt at rode med $1 og venner.


Adam Sjøgren (16-04-2008)
Kommentar
Fra : Adam Sjøgren


Dato : 16-04-08 14:53

On Wed, 16 Apr 2008 14:13:18 +0200, Flemming wrote:

> Hvad er der nu galt med det her?:

> sub return_matches ($data, $regexp) {
> return $data =~ /$regexp/;
> }

Umiddelbart vil jeg gætte på at det er syntaksen.


,

Adam

--
"Gravity is arbitrary!" Adam Sjøgren
asjo@koldfront.dk

Adam Sjøgren (18-04-2008)
Kommentar
Fra : Adam Sjøgren


Dato : 18-04-08 15:59

On Thu, 17 Apr 2008 23:29:13 +0200, Michael wrote:

> Flemming Frandsen wrote:
>> Adam Sjøgren wrote:
>>> On Wed, 16 Apr 2008 14:13:18 +0200, Flemming wrote:

>>>> Hvad er der nu galt med det her?:

>>>> sub return_matches ($data, $regexp) {

>>> Umiddelbart vil jeg gætte på at det er syntaksen.

>> Ja, det var da noget skrækkeligt vrøvl jeg fik skrevet:)

> Det er ikke ligefrem perl, men din ide er da god nok.

Så var det vel også [bare] syntaksen den var gal med?


,

Adam

--
"Och jag säger som Jennifer Lopez: Utan mina pärmar Adam Sjøgren
hade det blivit oordning!" asjo@koldfront.dk

Adam Sjøgren (18-04-2008)
Kommentar
Fra : Adam Sjøgren


Dato : 18-04-08 16:42

On Fri, 18 Apr 2008 17:12:09 +0200, Michael wrote:

> Adam Sjøgren wrote:
>> On Thu, 17 Apr 2008 23:29:13 +0200, Michael wrote:

>>> Det er ikke ligefrem perl, men din ide er da god nok.

>> Så var det vel også [bare] syntaksen den var gal med?

> Ja, men I glemte at gøre Jens opmærksom på at fremgangsmåden virker
> udemærket (det er sandsynligvis den bedste løsning på hans problem).

Tjah, jeg er ikke rigtigt enig, jeg gik ud fra at det var underforstået
at når svaret på hvad der er galt (alene) er syntaksen, så er resten -
dvs. ideen - god nok.


Mvh.

--
"Der er ikke noget, der virker i nat" Adam Sjøgren
asjo@koldfront.dk

Søg
Reklame
Statistik
Spørgsmål : 177417
Tips : 31962
Nyheder : 719565
Indlæg : 6407864
Brugere : 218876

Månedens bedste
Årets bedste
Sidste års bedste