/ 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
link søgning
Fra : thomas


Dato : 29-11-04 08:41

Hej
jeg er lige begyndt på et lille script/program som skal kunne finde link
i en html fil

efter at have læst filen ind i en array vil jeg gerne kunne læse et tegn
fra min array.
altså hvis denne streng "img src="http://sjov.img.dk/ID=25" ligger i en
array på index 0, vil jeg gerne læse først "i" så "m" osv

er der en som kan hjælpe mig med det

--
thomas

 
 
Flemming Frandsen (29-11-2004)
Kommentar
Fra : Flemming Frandsen


Dato : 29-11-04 09:15

thomas wrote:
> jeg er lige begyndt på et lille script/program som skal kunne finde link
> i en html fil

Fair nok, det er let.


> efter at have læst filen ind i en array vil jeg gerne kunne læse et tegn
> fra min array.

What? det lyder lidt underligt.


> altså hvis denne streng "img src="http://sjov.img.dk/ID=25" ligger i en
> array på index 0, vil jeg gerne læse først "i" så "m" osv
> er der en som kan hjælpe mig med det

Hmm, hvad med det her:

open FIL, "<hest.html" or die "screaming: $!";
my $html = join '', <FIL>;
close FIL;

my @srcLinks = ($html =~ m§src="([^"]+)"§smig);

Det skulle gerne give dig et array af links.

--
Regards Flemming Frandsen - http://dion.swamp.dk
PartyTicket.Net co founder & Yet Another Perl Hacker


Andrass Ziska Davids~ (29-11-2004)
Kommentar
Fra : Andrass Ziska Davids~


Dato : 29-11-04 09:46

Flemming Frandsen wrote:

> thomas wrote:
>
>> jeg er lige begyndt på et lille script/program som skal kunne finde
>> link i en html fil
>
>
> Fair nok, det er let.
>
>
>> efter at have læst filen ind i en array vil jeg gerne kunne læse et
>> tegn fra min array.
>
>
> What? det lyder lidt underligt.
>
>
>> altså hvis denne streng "img src="http://sjov.img.dk/ID=25" ligger i
>> en array på index 0, vil jeg gerne læse først "i" så "m" osv
>> er der en som kan hjælpe mig med det
>
>
> Hmm, hvad med det her:
>
> open FIL, "<hest.html" or die "screaming: $!";
> my $html = join '', <FIL>;
> close FIL;
>
> my @srcLinks = ($html =~ m§src="([^"]+)"§smig);
>
> Det skulle gerne give dig et array af links.
>
Det havde han jo i forvejen.

--
andrass

Flemming Frandsen (29-11-2004)
Kommentar
Fra : Flemming Frandsen


Dato : 29-11-04 10:28

Andrass Ziska Davidsen wrote:
>> Det skulle gerne give dig et array af links.
>>
> Det havde han jo i forvejen.

Nej, det var jo ikke det han havde.

Han havde et array af chars, ikke noget man kan bruge i Perl.

Derfor viste jeg jo at man kunne læse hele html dokumentet ind i en
streng (de første 3 linier) for derefter at finde samtlige src links med
et regexp.

--
Regards Flemming Frandsen - http://dion.swamp.dk
PartyTicket.Net co founder & Yet Another Perl Hacker


Andrass Ziska Davids~ (29-11-2004)
Kommentar
Fra : Andrass Ziska Davids~


Dato : 29-11-04 09:45

thomas wrote:
> Hej
> jeg er lige begyndt på et lille script/program som skal kunne finde link
> i en html fil
>
> efter at have læst filen ind i en array vil jeg gerne kunne læse et tegn
> fra min array.
> altså hvis denne streng "img src="http://sjov.img.dk/ID=25" ligger i en
> array på index 0, vil jeg gerne læse først "i" så "m" osv

Hvis din streng er klippet op og hældt på @array.

foreach my $tegn (@array) {
print "$tegn\n";, # eller hvad du nu skal bruge det til
}

Men det er ikke en særlig perlet måde at behandle strenge på (minder
lidt om C).

Du kan også gøre følgende:

my $streng = q(img src="http://sjov.img.dk/ID=25);
my @array = split //, $streng;
for (my $i = 0; $i <= $#array; $i++) {
print "$i. tegn:\t $array[$i]\n";
}

Men det kan nok kaldes perverst (faktisk rent C, på nær split).

Hvis du sagde noget om den større sammenhæng, kunne du måske få noget
rigtig Perl kode. Men de to ovenstående klarer opgaven.

Eller..... Faktisk kommer det rigtige svar her:

#!/usr/bin/perl
use warnings;
use strict;

my @array = (q(img src="http://sjov.img.dk/ID=25")); # array har en
# streng på 0'te
# plads
my @strengistykker = split //, $array[0]; # den klippes i

# stykker
for (my $i = 0; $i <= $#strengistykker; $i++) { # C-kode
print "$i. tegn:\t $strengistykker[$i]\n"; # do.
} # do.A


Men som sagt, det er grimt.
mvh
andrass

thomas (29-11-2004)
Kommentar
Fra : thomas


Dato : 29-11-04 09:56

thomas wrote:
> Hej
> jeg er lige begyndt på et lille script/program som skal kunne finde link
> i en html fil
>
> efter at have læst filen ind i en array vil jeg gerne kunne læse et tegn
> fra min array.
> altså hvis denne streng "img src="http://sjov.img.dk/ID=25" ligger i en
> array på index 0, vil jeg gerne læse først "i" så "m" osv
>
> er der en som kan hjælpe mig med det
>
> --
> thomas
tak for svaret.
jeg er ikke så go til perl men vil gerne lære, så jeres svar er guld :)

--
thomas

Henrik Tougaard (29-11-2004)
Kommentar
Fra : Henrik Tougaard


Dato : 29-11-04 11:04

Du vil altså gøre ca. det samme som HTML::LinkExtor
(http://search.cpan.org/~gaas/HTML-Parser-3.38/lib/HTML/LinkExtor.pm)?

Hvorfor dog ikke bare bruge den?

thomas (29-11-2004)
Kommentar
Fra : thomas


Dato : 29-11-04 11:10

Henrik Tougaard wrote:
> Du vil altså gøre ca. det samme som HTML::LinkExtor
> (http://search.cpan.org/~gaas/HTML-Parser-3.38/lib/HTML/LinkExtor.pm)?
>
> Hvorfor dog ikke bare bruge den?

jeg er ved at lære perl og kender derfor ikke HTML::LinkExtor
men vil prøve det tak

...
thomas

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

Månedens bedste
Årets bedste
Sidste års bedste