/ 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
$streng i mange linier & hente fra fil
Fra : Michael Andreasen


Dato : 08-05-03 14:57

Her er 2 små "hurtige" Håber det er ok, kan se der ikke er så mange
indlæg i denne gruppe?

1: Kan man (som i PHP) gøre følgende:
$flerelinier=<<< EOF
linie
linie $var2 $var3
EOF;

2: Hvis man gerne vil samle/grupere nogle resultater, f.eks. antal forkomne
email adresser i en fil, således at man har en løkke hvor man har

$1=email@test.com;

Hvordan lægger man det nu ind i en gruppe for sig, og tæller 1 op hvér gang
$1=email@test.com eller hvad det nu måtte være?

Hvis nogen kunne guide mig i hvilken retning jeg skal søge med dette
spørgsmål, så er jeg taknemmelig :)

--
Med Venlig Hilsen
Michael




 
 
Flemming Frandsen (08-05-2003)
Kommentar
Fra : Flemming Frandsen


Dato : 08-05-03 15:18

Michael Andreasen wrote:
> Her er 2 små "hurtige" Håber det er ok, kan se der ikke er så mange
> indlæg i denne gruppe?
>
> 1: Kan man (som i PHP) gøre følgende:
> $flerelinier=<<< EOF
> linie
> linie $var2 $var3
> EOF;

Ja, det hedder et here-doc:

my $ost = <<'HEST';
Ting
og
sager
HEST

Du kan også skrive:
my $ost =
'Ting
og
sager';

Læg mærke til at der er forskel på:
my $ost = <<"HEST";
og
my $ost = <<'HEST';

De svarer til at bruge hhv: '' og "" til at quote med.


> 2: Hvis man gerne vil samle/grupere nogle resultater, f.eks. antal forkomne
> email adresser i en fil, således at man har en løkke hvor man har

Eh? Det fatter jeg ikke helt, men mon ikke dette her gør det du gerne vil?:

my %count;
while (<>) {
   $count{$_}++;
}

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


Flemming Frandsen (08-05-2003)
Kommentar
Fra : Flemming Frandsen


Dato : 08-05-03 15:22

Flemming Frandsen wrote:

> while (<>) {

Jeg glemte at sige at <> er lettere magisk, den vil returnere alle
linier fra STDIN og derefter alle linier fra alle de filer du har givet
til programmet som parametre, det betyder at du kan køre scriptet som:

cat datafil | ./counter

eller:

../counter datafil


Du har måske lyst til at bruge chomp til at fjerne linieskiftet i
slutningen af hver linie, men det kommer jo an på hvad du skal bruge
resultatet til.

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


Michael Andreasen (08-05-2003)
Kommentar
Fra : Michael Andreasen


Dato : 08-05-03 16:59

"Flemming Frandsen" <ff-news.tiscali.dk@partyticket.net> wrote in message
news:CHtua.55465$y3.3876989@news010.worldonline.dk...
> > 2: Hvis man gerne vil samle/grupere nogle resultater, f.eks. antal
forkomne
> > email adresser i en fil, således at man har en løkke hvor man har
>
> Eh? Det fatter jeg ikke helt, men mon ikke dette her gør det du gerne
vil?:
> my %count;
> while (<>) {
> $count{$_}++;

Set i bakspejlet kan jeg godt se det var *ret dårligt* formuleret jeg
undskylder og prøver på en anden måde

Jeg har en fil som jeg læser linie efter linie. Der står egentligt kun en
email adresse i $1. f.eks. kan filen se sådan ud

anders@email.dk
peter@email.dk
stine@email.dk
stine@email.dk
stine@email.dk

Jeg ønsker nu at få det gruperet eller samlet således at når løkken er
færdig så har en sammentælling af *antal forkomster af den enkelte e-mail
adresse*

1 anders@email.dk
3 stine@email.dk
1 peter@email.dk

Jeg kunne smide det ind i Sql og så kunne jeg nok relativt nemt, lave denne
sammentælling. Men jeg tænker det er måske lige i overkanten at skulle tilgå
en database for det

Jeg kender iøvrigt ikke e-mail adresserne på forhånd.

Er der nogen der kan hjælpe mig lidt videre. Jeg har prøvet at læse lidt om
Hashes, man kan ikke rigtigt lige overskue om det er det jeg skal bruge til
dette.

Mvh
Michael



Christian Laursen (08-05-2003)
Kommentar
Fra : Christian Laursen


Dato : 08-05-03 17:23

"Michael Andreasen" <maskinen2000@hotmail.com> writes:

> "Flemming Frandsen" <ff-news.tiscali.dk@partyticket.net> wrote in message
> news:CHtua.55465$y3.3876989@news010.worldonline.dk...
> >
> > Eh? Det fatter jeg ikke helt, men mon ikke dette her gør det du gerne
> vil?:
> > my %count;
> > while (<>) {
> > $count{$_}++;
>
> Jeg har en fil som jeg læser linie efter linie. Der står egentligt kun en
> email adresse i $1. f.eks. kan filen se sådan ud
>
> anders@email.dk
> peter@email.dk
> stine@email.dk
> stine@email.dk
> stine@email.dk
>
> Jeg ønsker nu at få det gruperet eller samlet således at når løkken er
> færdig så har en sammentælling af *antal forkomster af den enkelte e-mail
> adresse*
>
> 1 anders@email.dk
> 3 stine@email.dk
> 1 peter@email.dk

Den ovenstående kode, som blev postet som muligt forslag, gør netop det.

--
Med venlig hilsen
Christian Laursen

Lars Balker Rasmusse~ (08-05-2003)
Kommentar
Fra : Lars Balker Rasmusse~


Dato : 08-05-03 17:30

Christian Laursen <xi@borderworlds.dk> writes:
> "Michael Andreasen" <maskinen2000@hotmail.com> writes:
>> "Flemming Frandsen" <ff-news.tiscali.dk@partyticket.net> wrote
>> >
>> > my %count;
>> > while (<>) {
>> > $count{$_}++;
>>
>> 1 anders@email.dk
>> 3 stine@email.dk
>> 1 peter@email.dk
>
> Den ovenstående kode, som blev postet som muligt forslag, gør netop det.

Med:

for (keys %count) {
print "$count{$_} $_\n";
}
--
Lars Balker Rasmussen                  "S.M.R.T."

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste