Thread View: pl.comp.lang.perl
3 messages
3 total messages
Started by Zbigniew Zych
Thu, 29 Jan 1998 19:58
hash'e
Author: Zbigniew Zych
Date: Thu, 29 Jan 1998 19:58
Date: Thu, 29 Jan 1998 19:58
46 lines
1840 bytes
1840 bytes
Mam maila...
W nim nagłówki postaci:
cosik: insze-cosik
albo:
cosik insze-cosik
I teraz bym to chciał mieć w tablicy hashowanej, bo tak ładniej :-)
Wydaje mi się że robię to straaasznie na okrętkę, może się da prościej?
(Bo że TMTOWTDI to wiem ;-)
$header = 1;
while(<>) {
chomp;
if(/^$/ && $header) {
$header = 0;
} elsif ($header) {
if(/^\t/) { # jesli nastepna linia zaczyna sie \t
$header[$#header] .= "\n$_"; # to jest to kontynuacja poprzedniej
} else {
push(@header, $_);
}
} else { # body
push(@body, $_);
}
}
foreach(@header) {
$klucz = $_;
$tresc = $_;
$klucz =~ s/([^\s:]+:?)\s(.*)/$1/s; # to mi sie okrutnie ni podoba, po
$tresc =~ s/([^\s:]+:?)\s(.*)/$2/s; # prostu musi sie dac prosciej ;-)
$header{$klucz} = $tresc; # i w koncu mamy hasha...
}
Aż mnie boli jak to oglądam.... ;-)
Ja to chce w 3 linijkach!!!!
Zbigniew Zych
--
http://onet.pl/~zych/ mailto:zych@onet.pl
Re: hash'e
Author: Robert Richard George 'reptile' ...
Date: Fri, 30 Jan 1998 16:51
Date: Fri, 30 Jan 1998 16:51
60 lines
3139 bytes
3139 bytes
On 98.01.29 Zbigniew Zych pressed the following keys:
> $header = 1;
>
> while(<>) {
> chomp;
> if(/^$/ && $header) {
> $header = 0;
> } elsif ($header) {
> if(/^\t/) { # jesli nastepna linia zaczyna sie \t
> $header[$#header] .= "\n$_"; # to jest to kontynuacja poprzedniej
> } else {
> push(@header, $_);
> }
> } else { # body
> push(@body, $_);
> }
> }
Do tego to nie mam się gdzie przyczepić, bo sam robię podobną magię.
> foreach(@header) {
> $klucz = $_;
> $tresc = $_;
> $klucz =~ s/([^\s:]+:?)\s(.*)/$1/s; # to mi sie okrutnie ni podoba, po
> $tresc =~ s/([^\s:]+:?)\s(.*)/$2/s; # prostu musi sie dac prosciej ;-)
> $header{$klucz} = $tresc; # i w koncu mamy hasha...
> }
foreach(@header) {
/^([^:]+:\s+(.*)$/;
$klucz = $1;
$klucz =~ tr/A-Z/a-z/; # pamiętaj o tym, że pole 'name'
# nagłówka w/g rfc822 jest case instensitive!
$tresc = $2;
if ($header{$klucz}) { # pola w nagłówku mogą się powtarzać
$header{$klucz} .= ", $tresc" # należy więc wtedy raczej dodać wartość
} else { # do już istniejącego pola o tej nazwie,
$header{$klucz} = $tresc # po przecinku (albo się źle doczytałem :)
}
}
>
> Aż mnie boli jak to oglądam.... ;-)
> Ja to chce w 3 linijkach!!!!
No i teraz głowa boli jeszcze bardziej, ale zawsze jak dochodzę do tego,
pocieszam się, że gdybym żył z kopania dołów, nie bolała by mnie głowa, ale
za to bolałby mnie kręgosłup :)
> Zbigniew Zych
Gad
--
mailto:reptile@pdi.net :)
Women are more complicated than PC... :(
Look into my headers and you'll see who I am. :)
Re: hash'e
Author: Krzysztof Koczyjan
Date: Sat, 31 Jan 1998 00:10
Date: Sat, 31 Jan 1998 00:10
55 lines
1912 bytes
1912 bytes
Zbigniew Zych <zych@use.address.from.sig.onet.pl> wrote in article
>
> $header = 1;
>
> while(<>) {
> chomp;
> if(/^$/ && $header) {
> $header = 0;
> } elsif ($header) {
> if(/^\t/) { # jesli nastepna linia zaczyna sie \t
> $header[$#header] .= "\n$_"; # to jest to kontynuacja poprzedniej
> } else {
> push(@header, $_);
> }
> } else { # body
> push(@body, $_);
> }
> }
>
> foreach(@header) {
> $klucz = $_;
> $tresc = $_;
> $klucz =~ s/([^\s:]+:?)\s(.*)/$1/s; # to mi sie okrutnie ni podoba,
po
> $tresc =~ s/([^\s:]+:?)\s(.*)/$2/s; # prostu musi sie dac prosciej
;-)
> $header{$klucz} = $tresc; # i w koncu mamy hasha...
> }
>
>
> Aż mnie boli jak to oglądam.... ;-)
> Ja to chce w 3 linijkach!!!!
Oryginal mial rzeczywiscie 3 linie ( + petla while ), ale ignorowal linie
przedluzenia , dodalem to i wynik ponizej:
while(<>){
chomp;
last unless $_;
if( /([^:]+):\s+(.*)/ ){
$header{lc($1)} = $2;
$lkey = lc($1);
}
else{
s/^\s+//;
$header{$lkey} .= "\n$_";
}
}
..... Czytanie tresci....
Pozdrowienia
KK
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads