From jvromans at squirrel.nl Wed Aug 9 07:14:40 2006 From: jvromans at squirrel.nl (Johan Vromans) Date: Wed, 9 Aug 2006 16:14:40 +0200 (CEST) Subject: [Groningen-pm] Bijeenkomst Groningen Perl Mongers, donderdag 17 augustus 2006 Message-ID: <20060809141440.7D945C77B9@phoenix.squirrel.nl> De "Perl Mongers" zijn groepen van gebruikers van de programmeertool Perl. Er zijn er meer dan 300 wereldwijd, waarvan een tiental in Nederland. "Groningen.pm" richt zich op de Perl gebruikers in de noordelijke provinci?n. We organiseren informele bijeenkomsten waar Perl gebruikers kunnen samenkomen en informatie en gebruikservaringen met betrekking tot Perl kunnen uitwisselen. Deze bijeenkomsten worden als regel gehouden op elke derde donderdag van de maand. Zoals gebruikelijk voor dit soort bijeenkomsten is er ook hier gelegenheid tot CAcert certificering en het uitwisselen van PGP keys. De eerstvolgende bijeenkomst vindt plaats op donderdag 17 augustus van 20:00 tot 22:30 uur bij Chatfone BV, St. Jansstraat 2D 9712 JN, in Groningen. Het woord is dit keer aan Piet, die zal laten zien hoe je de door Johan vertelde theorie in de praktijk kunt brengen. Heb je zin deze bijeenkomst bij te wonen, laat dit dan even weten via onze mailing list, groningen-pm at pm.org. Zin in een gezellig etentje vooraf? Verzamelen rond 18:15 bij Wagamama op de Vismarkt. Laat dit ook even weten op de mailing list, dan weten we met z'n hoevelen we zijn. Bezoek ook onze web site, http://groningen.pm.org/ . ------------------------------------------------------------------------------ Johan Vromans jvromans at squirrel.nl Squirrel Consultancy Exloo, the Netherlands http://www.squirrel.nl http://johan.vromans.org PGP Key 2048/4783B14D KFP = 65 44 CA 66 B3 50 0B 34 CE 0E FB CA 2D 95 34 D0 ------------------------ "Arms are made for hugging" ------------------------- From jvromans at squirrel.nl Tue Aug 15 02:54:41 2006 From: jvromans at squirrel.nl (Johan Vromans) Date: Tue, 15 Aug 2006 11:54:41 +0200 Subject: [Groningen-pm] Bijeenkomst Groningen Perl Mongers, donderdag 17 augustus 2006 In-Reply-To: <20060809141440.7D945C77B9@phoenix.squirrel.nl> (Johan Vromans's message of "Wed, 9 Aug 2006 16:14:40 +0200 (CEST)") References: <20060809141440.7D945C77B9@phoenix.squirrel.nl> Message-ID: Johan Vromans writes: > De eerstvolgende bijeenkomst vindt plaats op donderdag 17 augustus van 20:00 tot > 22:30 uur bij Chatfone BV, St. Jansstraat 2D 9712 JN, in Groningen. Wie komt er? Wie eet er mee? -- Johan From pietplomp at xs4all.nl Tue Aug 15 13:13:54 2006 From: pietplomp at xs4all.nl (Piet Plomp) Date: Tue, 15 Aug 2006 22:13:54 +0200 (CEST) Subject: [Groningen-pm] Bijeenkomst Groningen Perl Mongers, donderdag 17 augustus 2006 In-Reply-To: References: <20060809141440.7D945C77B9@phoenix.squirrel.nl> Message-ID: <10976.213.84.38.244.1155672834.squirrel@webmail.xs4all.nl> On Di, 15 augustus, 2006 11:54, Johan Vromans wrote: > Johan Vromans writes: > >> De eerstvolgende bijeenkomst vindt plaats op donderdag 17 augustus van >> 20:00 tot >> 22:30 uur bij Chatfone BV, St. Jansstraat 2D 9712 JN, in Groningen. > > Wie komt er? Ik wel :-) > Wie eet er mee? Ik ook, en Gea komt ook weer mee eten. Groetjes, Piet From helmo at initfour.nl Tue Aug 15 13:58:20 2006 From: helmo at initfour.nl (Herman van Rink) Date: Tue, 15 Aug 2006 22:58:20 +0200 Subject: [Groningen-pm] Bijeenkomst Groningen Perl Mongers, donderdag 17 augustus 2006 In-Reply-To: References: <20060809141440.7D945C77B9@phoenix.squirrel.nl> Message-ID: <44E2356C.2050006@initfour.nl> Johan Vromans wrote: > Johan Vromans writes: > >> De eerstvolgende bijeenkomst vindt plaats op donderdag 17 augustus van 20:00 tot >> 22:30 uur bij Chatfone BV, St. Jansstraat 2D 9712 JN, in Groningen. > > Wie komt er? Ja, ik > > Wie eet er mee? Ja, ik Met vriendelijke groet, Herman van Rink InitFour websolutions From aw at warpnet.nl Mon Aug 28 02:54:56 2006 From: aw at warpnet.nl (Arnoud Warmerdam) Date: Mon, 28 Aug 2006 11:54:56 +0200 Subject: [Groningen-pm] Precedence verschil '||' en 'or' Message-ID: <44F2BD70.30109@warpnet.nl> Hoi, Ik schreef net een scriptje om spikes te vinden in http logs en het werkte niet zoals bedoeld: ====================== perl script =================================== #!/usr/bin/perl use warnings; use strict; my $treshold = shift(@ARGV) || 10; # default treshold 10 hits/second my $currentsecond = 0; my $hits = 0; while(<>) { my ($newsecond) = m|^.*?\[\d+/\w+/\d+:(\d\d:\d\d:\d\d) \+\d+\]| || warn "Cannot parse this line: $_"; if ($newsecond ne $currentsecond) { print "$currentsecond: $hits hits.\n" if ($hits > $treshold); $currentsecond = $newsecond; $hits = 1; } else { $hits++; } } # don't forget the last second: print "$currentsecond: $hits hits.\n" if ($hits > $treshold); ===================== /perl script =================================== Met 'or' in plaats van '||' op regel 12 werkt het wel goed. Mijn vraag: is het beter om default 'or die' te gebruiken? Ik gebruik normaal altijd '|| die', kan me herinneren dat ooit iemand aan me heeft uitgelegd dat dat beter is, maar weet nu niet meer waarom ... Groeten, Arnoud From jvromans at squirrel.nl Mon Aug 28 05:06:01 2006 From: jvromans at squirrel.nl (Johan Vromans) Date: Mon, 28 Aug 2006 14:06:01 +0200 Subject: [Groningen-pm] Precedence verschil '||' en 'or' In-Reply-To: <44F2BD70.30109@warpnet.nl> (Arnoud Warmerdam's message of "Mon, 28 Aug 2006 11:54:56 +0200") References: <44F2BD70.30109@warpnet.nl> Message-ID: Arnoud Warmerdam writes: > my ($newsecond) = m|^.*?\[\d+/\w+/\d+:(\d\d:\d\d:\d\d) \+\d+\]| || > warn "Cannot parse this line: $_"; De vraag is wat je met dit statement wilt. Je bedoelt (neem ik aan): my ($newsecond) = m|^.*?\[\d+/\w+/\d+:(\d\d:\d\d:\d\d) \+\d+\]| || warn "..."; maar je zegt nu: my ($newsecond) = m|^.*?\[\d+/\w+/\d+:(\d\d:\d\d:\d\d) \+\d+\]| || warn "..."; Andersgeschreven: my $newsecond; if ( m|^.*?\[\d+/\w+/\d+:(\d\d:\d\d:\d\d) \+\d+\]| ) { $newsecond = $1; } else { $newsecond = warn "..."; } Wat zoveel betekent als: else { warn "..."; $newsecond = 1; } Omdat je in dit soort gevallen eigenlijk nooit echt de waarde van de warn (of die, of print) wilt toekennen is het dus beter om de lager-prioriteit "or" te gebruiken: my ($newsecond) = m|^.*?\[\d+/\w+/\d+:(\d\d:\d\d:\d\d) \+\d+\]| or warn "..."; Nu krijgt $newsecond de waarde undefined (die hij al had, maar okee) als de match faalt. Groetjes, Johan From jvromans at squirrel.nl Mon Aug 28 09:29:04 2006 From: jvromans at squirrel.nl (Johan Vromans) Date: Mon, 28 Aug 2006 18:29:04 +0200 (CEST) Subject: [Groningen-pm] Bijeenkomst Amsterdam Perl Mongers, dinsdag 5 september 2006 Message-ID: <20060828162904.40E26C771B@phoenix.squirrel.nl> From jvromans at squirrel.nl Mon Aug 28 09:29:56 2006 From: jvromans at squirrel.nl (Johan Vromans) Date: Mon, 28 Aug 2006 18:29:56 +0200 (CEST) Subject: [Groningen-pm] Bijeenkomst Amsterdam Perl Mongers, dinsdag 5 september 2006 Message-ID: <20060828162956.07563C771B@phoenix.squirrel.nl> [English version follows the dutch text] Amsterdam.pm staat voor de "Amsterdamse Perl Mongers", een groep van gebruikers van Perl. In tegenstelling tot wat de naam suggereert is Amsterdam.pm niet beperkt tot alleen Amsterdam, maar functioneert ook als de algemene Nederlandse gebruikersgroep. Iedereen die gelegenheid heeft is welkom, ook al bent u al bij Alphen.pm, Nijmegen.pm, Rotterdam.pm, Echt.pm, Exloo.pm, Groningen.pm of Wageningen.pm op bezoek geweest. Amsterdam.pm organiseert informele bijeenkomsten waar Perl gebruikers kunnen samenkomen en informatie en gebruikservaringen met betrekking tot Perl kunnen uitwisselen. De bijeenkomsten vinden normaliter plaats op elke eerste dinsdag van de maand. Zoals gebruikelijk voor dit soort bijeenkomsten is er ook hier gelegenheid tot CAcert certificering en het uitwisselen van PGP keys. De voertaal binnen Amsterdam.pm is in principe Nederlands, maar indien nodig zal Engels worden gebruikt, b.v. om te communiceren met niet-Nederlandssprekende aanwezigen. De eerstvolgende bijeenkomst vindt plaats op dinsdag 5 september van 20:00 tot 22:30 uur op het kantoor van XS4All, Eekholt 42, Diemen. Voor een routebeschrijving, zie http://www.xs4all.nl/contact/routebeschrijving.html Liefhebbers van een etentje vooraf kunnen tussen 17:45 en 18:15 verzamelen. Om 18:15 (?cht om 18:15!) gaan we naar restaurant Ling Hong in Diemen (zie b.v. http://restaurant.diemen.klup.nl/) op om een hapje te eten. Bezoek onze Web site http://amsterdam.pm.org voor meer details. [English version] Amsterdam.pm stands for the Amsterdam Perl Mongers. We're basically a Perl user group. Despite its name, it is not local to the Amsterdam environment, but it welcomes Perl mongers from all over the Netherlands. Amsterdam.pm organises informal meetings where Perl users can meet, and exchange information and experiences with regard to using Perl. The meetings are normally held every first Tuesday of the month. As conventional for these kind of meetings, there is also an opportunity to get CAcert certified, and to exchange PGP keys. Although the preferred language for communication is Dutch, English will be spoken if necessary. Our next meeting is Tuesday, September 5, from 20:00 till 22:30 at the office of XS4All, Eekholt 42, Diemen. See http://www.xs4all.nl/contact/routebeschrijving.html for directions to get there. Should you want to join some of us for dinner, please gather between 17:45 and 18:15. At 18:15 sharp we'll leave for restaurant Ling Hong in Diemen (http://www.linghong.tk) for dinner. See http://amsterdam.pm.org for more details. ------------------------------------------------------------------------------ Johan Vromans jvromans at squirrel.nl Squirrel Consultancy Exloo, the Netherlands http://www.squirrel.nl http://johan.vromans.org PGP Key 2048/4783B14D KFP = 65 44 CA 66 B3 50 0B 34 CE 0E FB CA 2D 95 34 D0 ------------------------ "Arms are made for hugging" ------------------------- From aw at warpnet.nl Tue Aug 29 07:09:25 2006 From: aw at warpnet.nl (Arnoud Warmerdam) Date: Tue, 29 Aug 2006 16:09:25 +0200 Subject: [Groningen-pm] Precedence verschil '||' en 'or' In-Reply-To: References: <44F2BD70.30109@warpnet.nl> Message-ID: <44F44A95.5060106@warpnet.nl> Johan Vromans wrote: > De vraag is wat je met dit statement wilt. Je bedoelt (neem ik aan): > > my ($newsecond) = m|^.*?\[\d+/\w+/\d+:(\d\d:\d\d:\d\d) \+\d+\]| > || warn "..."; Klopt. > Omdat je in dit soort gevallen eigenlijk nooit echt de waarde van de > warn (of die, of print) wilt toekennen is het dus beter om de > lager-prioriteit "or" te gebruiken: > > my ($newsecond) = m|^.*?\[\d+/\w+/\d+:(\d\d:\d\d:\d\d) \+\d+\]| > or warn "..."; Agreed. > Nu krijgt $newsecond de waarde undefined (die hij al had, maar okee) > als de match faalt. Klopt, en bij gebruik van '||' krijgt $newsecond de waarde 1. Maar het probleem is niet zozeer wat er gebeurt als de match faalt, maar juist wat er gebeurt als hij succesvol is. Mijn bedoeling is dat het eerste element van het resultaat van de regex ($1) geassigned wordt aan $newsecond ($ns for short), dus: ( ($ns) = regex ) || die; # purpose: $ns = $1; Omdat de '||' operator precedence heeft over de assignment operator is dit echter wat er gebeurt: ($ns) = ( regex || die ); # effect: $ns = 1; In dit geval is het dus beter om 'or' te gebruiken. Echter, in dit geval: my $treshold = shift(@ARGV) || 10; wil je juist '||' hebben, anders staat er: ( my $treshold = shift(@ARGV) ) || 10; waardoor $treshold niet de default waarde 10 krijgt als er geen argument wordt meegegeven. Dus zowel '||' als 'or' zijn nuttig, of zoals http://perl.plover.com/FAQs/Precedence.html het zegt: "use || for selecting values, and use or for controlling the flow of statements". Voor de echte liefhebber: onderaan dit mailtje staat een testscriptje. Probeer maar eens te voorspellen welke waardes uit de diverse tests komen en welke warnings Perl genereert ... Groeten, Arnoud ==================== testscriptje ============================ #!/usr/bin/perl use warnings; use strict; $_ = 'example'; my @testarray = (10, 20); my %test; # Tests with '||': $test{'1a'} = /^exam$/ || warn "Warning for test 1a.\n"; $test{'2a'} = /^example$/ || warn "Warning for test 2a.\n"; $test{'3a'} = /^(example)$/ || warn "Warning for test 3a.\n"; $test{'4a'} = /^(ex)(ample)$/ || warn "Warning for test 4a.\n"; ($test{'5a'}) = /^(example)$/ || warn "Warning for test 5a.\n"; ($test{'6a'}) = /^(ex)(ample)$/ || warn "Warning for test 6a.\n"; ($test{'7a'}) = (/^(ex)(ample)$/) || warn "Warning for test 7a.\n"; $test{'8a'} = 10 || 20; $test{'9a'} = 0 || 20; $test{'aa'} = (10, 20) || 30; $test{'ba'} = @testarray || 30; # Tests with 'or': $test{'1b'} = /^exam$/ or warn "Warning for test 1b.\n"; $test{'2b'} = /^example$/ or warn "Warning for test 2b.\n"; $test{'3b'} = /^(example)$/ or warn "Warning for test 3b.\n"; $test{'4b'} = /^(ex)(ample)$/ or warn "Warning for test 4b.\n"; ($test{'5b'}) = /^(example)$/ or warn "Warning for test 5b.\n"; ($test{'6b'}) = /^(ex)(ample)$/ or warn "Warning for test 6b.\n"; ($test{'7b'}) = (/^(ex)(ample)$/) or warn "Warning for test 7b.\n"; $test{'8b'} = 10 or 20; $test{'9b'} = 0 or 20; $test{'ab'} = (10, 20) or 30; $test{'bb'} = @testarray || 30; foreach(sort(keys(%test))) { printf("Test %2s: '%s'.\n", $_, $test{$_}); } =================== /testscriptje ============================