»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
Herby_ MasterDuke: Ah, thanks 00:04
Ulti: ++ on the advent calendar article
00:25 wamba left 00:33 tyil left 00:34 tyil joined 00:39 sena_kun left 00:42 Cabanossi left 00:45 Cabanossi joined 01:02 raschipi left
RabidGravy just prepping the advent aricle to post lest anyone is getting nervous 01:13
there, advent article posted 01:22
Hotkeys \o/
01:23 troys_ is now known as troys
RabidGravy it will be a miracle f there are fewer than ten typos as I went to the supermarket in the middle and had to had a few beers to revover ;-) 01:23
01:23 konsolebox left 01:25 Actualeyes joined 01:30 konsolebox joined, aborazmeh joined, aborazmeh left, aborazmeh joined
RabidGravy So I avoided the bad paragraph break errors from last year, but there are some egregious typos and brainos, but I think I'll leave them as it entertains the language geeks ;-) 01:33
geekosaur typopotamuses? 01:36
RabidGravy :-O 01:38
(also quite ratted now)
can we move the "advent" to a different time of year, lots of time pressure in december ;-) 01:39
that's perl6advent.wordpress.com/2017/12/...ier-title/ if you want to get in early 01:40
01:50 RabidGravy left
Herby_ .tell RabidGray ++ 02:01
yoleaux Herby_: I'll pass your message to RabidGray.
Herby_ whoops 02:03
.tell RabidGravy ++
yoleaux Herby_: I'll pass your message to RabidGravy.
02:09 troys is now known as troys_ 02:21 Herby__ joined 02:24 colomon_ joined
japhb Where is the source for the advent posts? I think (at least) the posts for the 14th and the 17th have mangled source code snippets, and I'd like to see the original. 02:25
02:26 colomon left, colomon_ is now known as colomon, colomon left, colomon joined 02:30 colomon left 02:31 aborazmeh left, colomon joined 02:40 colomon left 02:42 aborazmeh joined, aborazmeh left, aborazmeh joined 02:46 ilbot3 left 02:50 ChoHag left 02:56 ilbot3 joined, ChanServ sets mode: +v ilbot3 03:03 agwind joined 03:05 jeek joined 03:08 agwind left 03:10 agwind joined 03:20 piojo_ joined, araraloren joined
araraloren 哦| 03:21
o|
Herby__ \o 03:28
03:33 Herby__ left 03:35 raschipi joined 03:37 konsolebox left 03:38 konsolebox joined 03:40 colomon joined 03:43 Cabanossi left 03:45 Cabanossi joined 03:50 troys_ is now known as troys 04:06 agwind left 04:07 agwind joined
Herby_ does p6 have something comparable to python's "setdefault"? 04:12
for hashes
araraloren Herby_, I check setdefault of hash in python, I think Perl6 default does that 04:24
m: my %h = name => 'foo'; say %h; %h<name> = 'bar'; say %h; 04:25
camelia {name => foo}
{name => bar}
araraloren m: my %h; say %h; %h<name> = 'bar'; say %h; 04:26
camelia {}
{name => bar}
04:26 agwind left
raschipi M: my %h is default(42); say %h<a>; %h<a> = 55; say %h<a>; %h<a> = Nil; say %h<a> 04:27
m: my %h is default(42); say %h<a>; %h<a> = 55; say %h<a>; %h<a> = Nil; say %h<a>
camelia 42
55
42
04:27 agwind joined
araraloren oh, I am wrong 04:29
It should be
m my %h = name => 'foo'; say %h; %h<name> //= 'bar'; say %h;
m: my %h = name => 'foo'; say %h; %h<name> //= 'bar'; say %h;
camelia {name => foo}
{name => foo}
araraloren Herby_, ^^ 04:30
m: my %h = namex => 'foo'; say %h; %h<name> //= 'bar'; say %h;
camelia {namex => foo}
{name => bar, namex => foo}
04:51 aborazmeh left 04:54 agwind left 04:55 agwind joined
Herby_ araraloren / raschipi: thanks 04:58
04:58 Cabanossi left 04:59 Cabanoss- joined 05:00 Cabanoss- is now known as Cabanossi
raschipi Herby_: You can put a default on any variable, attribute or array. 05:00
Herby_ raschipi: can you put a default of any empty hash? 05:08
like: current_dict = current_dict.setdefault(letter, {})
I'm reading up on tries: stackoverflow.com/questions/110153...-in-python
raschipi No idea what that means.
Herby_ sorry, i'm reading that python example of creating a trie 05:09
and trying to figure out how i'd do it in p6
raschipi Well, it would be nested hashes from what I'm getting, why do you want it? 05:13
Yeah, "setdefault" would be //= or = // like araraloren said above. 05:14
Herby_ k thanks 05:15
05:35 khw left 05:38 TEttinger joined 05:41 Cabanossi left 05:43 agwind left 05:44 Cabanossi joined 05:45 agwind joined 05:55 piojo_ left, agwind left 06:00 AlexDani` is now known as AlexDaniel 06:13 piojo_ joined 06:15 troys is now known as troys_ 06:21 bellagnok256 joined, bellagnok256 left 06:26 piojo_ left 06:40 wamba joined 06:45 mspo left 06:57 Cabanossi left 06:59 Cabanossi joined 07:02 AlexDaniel left 07:06 raschipi left 07:20 vike joined, vike left 07:42 Cabanossi left, vike joined 07:44 vike left, Cabanossi joined 07:47 rindolf joined 07:50 troys_ is now known as troys 08:01 parv joined 08:02 troys left 08:03 darutoko joined 08:06 AlexDaniel joined
Hotkeys Perhaps this question is more appropriate here than in #perl6-dev: What kinds of uses might the new/upcoming .toggle have? 08:16
09:10 piojo_ joined 09:22 {-puzzle538 joined, {-puzzle538 left 09:24 xinming_ left, stammhe367 joined, stammhe367 left 09:25 dolcissi767 joined, dolcissi767 left 09:42 pipi931 joined, pipi931 left 09:45 blowme10 joined 09:46 blowme10 left, nico291 joined, nico291 left 09:48 DarthGandalf left 09:50 DarthGandalf joined 09:54 piojo_ left
tyil today's advent article has a typo in the last sentence, where it says "tutotials" 09:54
should most likely be tutorials
dpk is there any way in the perl6 repl to disable the 'potential difficulties' warnings? or at least make it still do what it would have done 10:06
(i'm aware this may be bad practice but i'm trying to get a sense for edge cases)
lizmat s/tutotials/tutorials/ done # tyil++ 10:09
tyil thanks! 10:11
AlexDaniel lizmat: there was a question ↑ about .toggle :) 10:25
lizmat: if you have a good answer, maybe we can put it into the documentation 10:26
lizmat perhaps an example would work best: 10:28
in its simplest case, .toggle is like grep *but* once the condition has evaluated to False for the first time, it stops checking 10:29
m: dd ^10 .map( { .say; $_ } ).grep( * < 5 )
camelia 0
(0, 1, 2, 3, 4).Seq
1
2
3
4
5
6
7
8
9
lizmat m: dd ^10 .map( { .note; $_ } ).grep( * < 5 ) 10:30
camelia 0
1
2
3
4
5
6
7
8
9
(0, 1, 2, 3, 4).Seq
lizmat note that all values have been sayd
m: dd ^10 .map( { .note; $_ } ).toggle( * < 5 )
camelia 0
1
2
3
4
5
(0, 1, 2, 3, 4).Seq
tyil notes it
araraloren It test all value
lizmat note that with .toggle it only tests until the first False 10:31
10:32 sena_kun joined
lizmat with multiple Callables, you specify condition for inclusion, condition for exclusion, condition for inclusion, etc. 10:34
dd ^10 .map( { .say; $_ } ).toggle( * < 3, * > 5, * < 9 )
10:34 camelia left
lizmat m: dd ^10 .map( { .say; $_ } ).toggle( * < 3, * > 5, * < 9 ) 10:34
evalable6 0
(0, 1, 2, 6, 7, 8).Seq
1
2
3
4
5
6
7
8
9
lizmat m: dd ^10 .map( { .note; $_ } ).toggle( * < 3, * > 5, * < 9 )
evalable6 0
1
2
3
4
5
6
7
8
9
(0, 1, 2, 6, 7, 8).Seq
lizmat if you want to start with an exclusion condition, you need to pass the :off named parameter 10:35
m: dd ^10 .map( { .note; $_ } ).toggle( :off, * > 3, * < 6, * > 8 ) 10:36
evalable6 0
1
2
3
4
5
6
7
8
9
(4, 5, 9).Seq
lizmat I'm not awake yet to write coherent documentation :-) so if someone else could take a stab, that would be fine by me :-) 10:37
10:38 camelia joined
AlexDaniel I filed a doc issue here: github.com/perl6/doc/issues/1716 10:38
although… do we have any tests for it in roast?
10:39 ChanServ sets mode: +v camelia
AlexDaniel heh, evalable6++ :) 10:39
10:43 Cabanossi left 10:44 Cabanossi joined 10:45 konsolebox left, konsolebox joined
lizmat AlexDaniel: no, no tests for .toggle in roast yet, as I was unsure the implementation would be acceptable by jnthn and TimToady 11:02
since they haven't reacted, I guess it means they're ok with it
still means we need a .toggle for Supplies as well
afk& 11:03
Hotkeys I'm curious what interesting uses people will have for toggle
araraloren I think it's just a candidates we have :) 11:06
TEttinger Hotkeys: toggle seems handy in general. in clojure it's analogous to take-while and map all rolled up into one procedure that does grep stuff too 11:24
since toggle has a stopping condition, it could make dealing with lazy/infinite/very-large sequences easier 11:25
11:26 konsolebox left 11:27 |oLa| joined 11:28 Grauwolf left, konsolebox joined, Grauwolf joined
TEttinger the name toggle is just awful though. toggling a switch means turning it off from on, or on from off 11:30
and there's none of that here? 11:31
is that what the multiple Callables do?
araraloren Why not add another grep candidate :) 11:32
or add a :toggle named argument
11:37 eliasr joined 11:38 Cabanossi left, Cabanossi joined
Hotkeys TEttinger: from what I understand it's essentially toggling between a take-while and a skip-until 11:42
So I don't mind the name
araraloren :) okay 11:43
AlexDaniel
.oO( greggle?
)
11:48 laret709 joined
laret709 10,08▄10,03▄03,05▄11,04▄03,07▄04,02▄10,04▄12,07▄11,09▄10,03▄02,10▄07,07▄12,13▄05,09▄04 HAPPY NIGGER DAY!! PLEASE SAY HI TO ALL THE DUMB NIGGERS IN #OFTC...quicktalkeh676te.onion/6697dghtweqmkv: camelia colomon tyil darutoko committable6 MasterDuke Herby_ statisfiable6 releasable6 TEttinger rindolf reportable6 bisectable6 |oLa| bloatable6 Voldenet AlexDaniel coverable6 labster r 11:48
02,13▄13,08▄09,02▄07,11▄03,03▄09,02▄13,11▄09,04▄11,02▄05,05▄03,09▄05,13▄05,11▄03,11▄11,09▄07,13▄07,02▄13 HAPPY NIGGER DAY!! PLEASE SAY HI TO ALL THE DUMB NIGGERS IN #OFTC...quicktalkeh676te.onion/6697vfxtunuyw: committable6 |oLa| afresh1 Cabanossi Hotkeys xcm ryn1x spider-mario TimToady quotable6 jeek comborico1611 benchable6 ilbot3 labster coverable6 greppable6 eva
11:48 laret709 left 11:53 konsolebox left
moritz deletes some spam from IR clogs 11:55
11:57 TEttinger left 11:59 konsolebox joined 12:00 piojo_ joined
AlexDaniel heh, the spam bot went through extra trouble to notify other bots here… 12:05
12:06 ZzZombo left, ZzZombo joined 12:09 piojo_ left 12:12 Cabanossi left 12:14 Cabanossi joined
AlexDaniel hah, in fact all of them… 12:16
12:19 piojo_ joined
tyil bots need love too 12:37
araraloren O_o 12:38
12:44 pecastro left 12:55 parv left
timotimo Herby_: you don't have to set the default of a hash to an empty hash to get a trie, because autovivification does all that work for you. observe: 12:56
m: my %trie; %trie<h><e><l><l><o> = 1; say %trie
camelia {h => {e => {l => {l => {o => 1}}}}}
araraloren Is there a way skip the rest element of a Iterator ?
timotimo the "rest element"? if you want to skip to the end, you can .sink-all 12:58
(which will also sink the values)
12:58 AlexDaniel left, piojo_ left
araraloren oh, thanks, I found that in document, but not sure 12:59
I thought there will be a method called skip-all :)
13:26 piojo_ joined 13:27 Cabanossi left 13:28 geospeck joined 13:29 Cabanossi joined 13:30 lasse_ joined 13:45 comborico1611 left, comborico1611 joined 13:58 AlexDaniel joined 14:02 Hotkeys left 14:06 piojo_ left 14:07 espadrine left 14:11 Cabanossi left 14:14 Cabanossi joined 14:26 andrzejku joined
andrzejku hi 14:29
:)
Geth doc: 5c0d7807c1 | (Elizabeth Mattijsen)++ | doc/Type/Telemetry.pod6
Update basic Telemetry documentation

More on the separate instruments to follow
14:32
synopsebot Link: doc.perl6.org/type/Telemetry
lizmat timotimo: sometimes I think we need a "done" on Iterators, like we have on Supplies 14:34
that would default to sink-all 14:35
14:41 piojo_ joined 14:46 piojo_ left
Geth doc: 5b3f34bc00 | (Elizabeth Mattijsen)++ | doc/Type/Telemetry/Instrument/Usage.pod6
First stab at documenting Telemetry::Instrument::Usage
15:05
synopsebot Link: doc.perl6.org/type/Telemetry/Instrument/Usage
lizmat afk again&
15:53 Celelibi left 15:56 Celelibi joined 16:00 araraloren left 16:08 camelia left 16:14 andrzejku left 16:15 andrzejku joined 16:17 geospeck left
Herby_ timotimo: that is awesome. Now that I've had a little sleep, I'm going to give tries another look 16:22
timotimo you're gonna give tries another try? :3
16:22 nine left
Herby_ even after multiple tries, i'll give tries another try 16:23
:)
timotimo triès bien
16:23 cdg joined
masak .oO( triès bien -- the data structure of choice when a trèes bien is not enough ) 16:25
16:25 andrzejku left
timotimo i think i need an explanation for that one, masak 16:25
16:25 david_xd joined
masak less cerebral than I'd wish 16:26
just that two data structures are named 'trie' and 'tree', respectively
timotimo oh!
that's actually not bad at all
masak bows 16:27
...and the correct French spelling is 'très', but who's counting
timotimo my google chrome does this very annoying thing where code lines in the advent calendar have everything below the baseline cut off :\ 16:28
but not on every line. on most, but a few have their lower parts legible 16:29
mostly it's g looking like a 16:31
"what's an exchanae?"
16:39 sena_kun left 16:45 espadrine joined 16:48 geospeck joined 16:51 andrzejku joined 17:01 khw joined
Herby_ timotimo: speaking of tries. If you have a moment free, could you show me how you'd write this python solution in perl6? 17:06
stackoverflow.com/questions/110153...-in-python
the accepted answer on that, the function make_trie
I can't wrap my head around the current_dict = current_dict.setdefault(letter, {}) 17:07
:(
timotimo ah, sure 17:08
so you're starting off with the base dictionary
17:09 |oLa| left
timotimo then for each letter of the word you access the entry in that dictionary for that letter. if there's no entry yet, an empty dictionary will be created and put there, and that's what gets assigned into current_dict 17:09
Herby_ ok 17:10
timotimo it's like you're moving a cursor through the nested dictionaries, creating new empty dictionaries if necessary on the way
Herby_ I just don't see where the actual letter gets inserted in to the dictionary, since it appears to always create an empty dict 17:11
timotimo m: my %a; %a{|("foobar".comb)} = 1; say %a
evalable6 {a => (Any), b => (Any), f => 1, o => (Any), r => (Any)}
timotimo oops, wrong one
m: my %a; %a{||("foobar".comb)} = 1; say %a
evalable6 {a => (Any), b => (Any), f => 1, o => (Any), r => (Any)}
timotimo also not the right one
ah, the trick with that is that the letters are keys in the dictionary, not values
the only actual value that ever gets stored is "_end_"
17:12 Cabanossi left 17:14 Cabanossi joined
Herby_ hmm 17:15
timotimo so we're starting with an empty dict ("root"), then by going through the word "foo" we do the following:
17:16 nine joined
timotimo current_dict is "root" first. our first letter is f. we ask for what "root" has stored at f, which is currently nothing. setdefault stores a {} at the l key in "root" for us 17:16
so our root looks like {"f": {}} now
and our current_dict is what setdefault returned, which is that inner empty dict
Herby_ ok
timotimo next letter is o, and current_dict is the inner dictionary. we ask it to give (and perhaps install {}) what's in that inner dict at key "o" 17:17
17:17 camelia joined
timotimo so it creates that empty dict and we have our root look like {"f": {"o": {}}} and current_dict is the innermost empty dict 17:17
one more o, the same treatment, but for "one layer" deeper in there
gives us {"f": {"o": {"o": {}}}}
we're done with the loop and our current_dict is the innermost dict once again 17:18
Herby_ ok
timotimo we store _end at the _end key there, which makes the innermost dict be {"_end_": "_end_"}
17:18 ChanServ sets mode: +v camelia
timotimo now going with a new word, like "foor", will be very different, because this time there are already dictionaries stored under the keys for "f", "o", and "o" 17:19
i'll be afk for a bit
Herby_ ok thanks for the explanation 17:20
17:20 cdg left 17:21 geospeck left 17:25 andrzejku left 17:26 setty1 joined 17:32 nige joined, ruschlem joined
nige hi - I just added advent day 18 and scheduled it for tomorrow morning 17:33
Herby_ nige: o/
can't wait to read it
17:34 andrzejku joined
timotimo i have the power to read it early >:) 17:35
Herby_ great power, great responsibility etc 17:37
17:37 nige left
timotimo scheduled in 7 hours, huh? 17:38
yeah, that sounds perfect
17:39 nige joined
moritz nige: I've added a "Day 18:" to the title, and set the schedule to midnight. Hope that's fine with you 17:39
just to keep stuff consistent with the other posts 17:42
timotimo aaw, that's a short post :( 17:45
17:50 benchable6 left, benchable6 joined, ChanServ sets mode: +v benchable6 17:51 piojo_ joined
nige thanks Moritz - that's fine 17:55
moritz btw the grammar chapter in perl 6 fundamentals was very helpful 17:58
18:01 cdg joined 18:05 cdg left, mziescha joined 18:08 unicodable6 left, reportable6 left, squashable6 left, greppable6 left, coverable6 left, nativecallable6 left, unicodable6 joined, reportable6 joined 18:09 greppable6 joined, squashable6 joined, coverable6 joined, nativecallable6 joined, ChanServ sets mode: +v unicodable6, ChanServ sets mode: +v reportable6, ChanServ sets mode: +v nativecallable6 18:14 piojo_ left 18:20 agwind joined 18:21 M_o_C joined 18:31 agwind left 18:32 cdg joined 18:40 darutoko left
moritz nige: thanks for the feedback. There's more detail in smile.amazon.com/dp/1484232275/ :-) 18:44
18:59 colomon_ joined 19:00 colomon left, colomon_ is now known as colomon 19:09 andrzejku left 19:14 geospeck joined 19:24 nige left 19:26 nige joined 19:27 Mikasi joined, Mikasi left, Mikasi joined 19:29 cdg left
dpk "A Recursive Descent into Parsing" *groan* 19:31
19:31 mziescha left
AlexDaniel sings along 19:33
19:35 rindolf left 19:36 rindolf joined, M_o_C left 19:37 eliasr left
moritz likes the subtitle 19:38
19:42 Mikasi left, nige left 19:43 Cabanossi left 19:44 Cabanossi joined, nige joined 19:45 andrzejku joined
buggable New CPAN upload: LIVR-2.1.0.tar.gz by KOORCHIK cpan.metacpan.org/authors/id/K/KO/...1.0.tar.gz 19:48
19:52 leah2 left
AlexDaniel moritz: nothing wrong with it really 19:58
Herby_ in that buggable msg: "LIVR-2.1.0.tar.gz" looks to be a hyperlink that goes nowhere 19:59
not sure if thats for every new CPAN upload msg or not 20:00
moritz huh, works here
jast works for me, too
maybe there was a bit of a delay before it finished setting itself up?
moritz wget --quiet cpan.metacpan.org/authors/id/K/KO/....0.tar.gz; echo $?
0
Herby_ when I click on the bolded "LIVR-2.1.0.tar.gz", it just opens up a webpage with a url of LIVR-2.1.0.tar.gz 20:01
jast oh, that's not a link at all, your client is probably misunderstanding it
Herby_ the cpan link works
gotcha
jast IRC doesn't have a concept of links
Herby_ i'm using hexchat, not sure if that makes a difference
jast so terminals and clients try to guess, sometimes incorrectly
Herby_ kk 20:02
moritz the IRC logs guess correctly too: irclog.perlgeek.de/perl6/2017-12-17#i_15591493
jast maybe the IRC logs just don't link URIs without protocol prefixes, like example.org 20:03
(just verified :))
20:03 colomon left
moritz that's pretty hard to get right, given the proliferation of TLDs 20:05
20:08 leah2 joined 20:19 geospeck left
timotimo there was this one terminal emulator that would send dns requests out to figure out if something the mouse is hovering over is a valid domain 20:19
moritz "what could possibly go wrong" 20:21
20:36 nige left 20:37 nige joined 20:38 david_xd left 20:40 yqt joined 20:42 Hotkeys joined 20:46 colomon joined 20:53 david_xd joined 20:57 committable6 left, committable6 joined, ChanServ sets mode: +v committable6 20:58 evalable6 left, releasable6 left, bisectable6 left, bloatable6 left, statisfiable6 left, quotable6 left, quotable6 joined, bisectable6 joined, ChanServ sets mode: +v bisectable6, evalable6 joined, releasable6 joined, bloatable6 joined, statisfiable6 joined 21:09 lasse_ left
nige surprised to see that perl 6 is not appearing in the timeline: en.wikipedia.org/wiki/Timeline_of_..._languages 21:16
21:20 setty1 left 21:22 andrzejku left 21:30 nige left 21:39 yqt left
b2gills .tell nige There is no entry for any version of Perl other than 1.0 en.wikipedia.org/wiki/Timeline_of_..._languages 21:50
yoleaux b2gills: I'll pass your message to nige.
Geth doc: 0++ created pull request #1717:
Minor adjustments
21:51
lizmat b2gills nightfrog en.wikipedia.org/wiki/Timeline_of_...ages#2010s # added Perl 6 21:58
Herby_ lizmat: ++
lizmat nightfrog sorry, I meant nige
Herby_ the hyperlink for Perl 6 doesn't go anywhere, not sure if that is intentional or not 21:59
rather, it doesnt go to an article
b2gills Should probably point to en.wikipedia.org/wiki/Perl_6 22:00
lizmat fixed 22:01
Herby_ Huzzah!
MasterDuke lizmat++. another possible suggestion, rakudo in "The Rakudo Team" could link to en.wikipedia.org/wiki/Rakudo_Perl_6. or does that make the entry too busy? 22:03
buggable New CPAN upload: Text-Markov-1.0.1.tar.gz by BBKR cpan.metacpan.org/authors/id/B/BB/...0.1.tar.gz 22:08
lizmat MasterDuke: linked the Rakudo Team to the CREDITS page 22:12
MasterDuke good idea, lizmat++ 22:13
lizmat also: Perl 6 now links to the Rakudo Perl 6 page, as that was the implementation that became officially released then
22:15 TEttinger joined 22:21 colomon_ joined 22:22 colomon left, colomon_ is now known as colomon 22:27 Cabanossi left 22:29 Cabanossi joined 22:31 DarthGandalf left 22:36 agwind joined 22:38 colomon left
rindolf Happy birthday, Perl! 22:40
22:42 R0b0t1` left 22:45 R0b0t1` joined
tyil happy birthday! 22:49
22:52 DarthGandalf joined 22:53 colomon joined 22:57 colomon left 22:58 Cabanossi left 22:59 Cabanossi joined 23:01 colomon joined, ryn1x left
lizmat whee! 23:03
well, at least in NL now :-)
23:10 rindolf left 23:15 comborico1611 left, comborico1611 joined 23:20 ryn1x joined 23:21 agwind left 23:30 john_parr left
tyil lizmat: I can ask sam if she wanna come visit your place when she wakes up, to celebrate the wonders of perl ^^ 23:30
23:34 david_xd left 23:38 john_parr joined 23:42 astronavt joined 23:55 itaipu joined 23:57 Cabanossi left 23:59 Cabanossi joined