From starfire at zipcon.net Thu Jun 1 12:36:25 2000 From: starfire at zipcon.net (starfire@zipcon.net) Date: Wed Aug 4 00:07:21 2004 Subject: SPUG: each function won't recognize hash deref Message-ID: <20000601173625.20396.qmail@zipcon.net> The retrieve subroutine of Storable.pm returns a hash ref. But when I deref the return value and pass it to the each function, perl doesn't recognize it as a hash: $data = retrieve("$sambadir/hitcount.dat"); while (($key, $value) = each($$data)) { ... Type of arg 1 to each must be hash (not scalar deref) at hitsbyid.cgi line 41, near "$data)" syntax error at hitsbyid.cgi line 43, near "(" If this were C, I would throw in a typecast. Do I need to bless my hashref somehow? Richard.Anderson Richard.Anderson@raycosoft.com www.unixscripts.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From kevin at n2h2.com Thu Jun 1 12:50:24 2000 From: kevin at n2h2.com (Kevin Fink) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: each function won't recognize hash deref In-Reply-To: <20000601173625.20396.qmail@zipcon.net> Message-ID: Shouldn't that be each(%$data)? Kevin On 1 Jun 2000 starfire@zipcon.net wrote: > The retrieve subroutine of Storable.pm returns a hash ref. But when I deref > the return value and pass it to the each function, perl doesn't recognize it > as a hash: > > $data = retrieve("$sambadir/hitcount.dat"); > while (($key, $value) = each($$data)) { > ... > > Type of arg 1 to each must be hash (not scalar deref) at hitsbyid.cgi line 41, > near "$data)" > syntax error at hitsbyid.cgi line 43, near "(" > > If this were C, I would throw in a typecast. Do I need to bless my hashref > somehow? > > Richard.Anderson > Richard.Anderson@raycosoft.com > www.unixscripts.com > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > ------------------------------------------------------------------------------ Kevin Fink N2H2, Creators of Bess and Searchopolis Chief Technology Officer 900 Fourth Avenue, Suite 3400 http://www.n2h2.com/ Seattle, WA 98164 VOICE: 206-336-1501 / 800-971-2622 FAX: 206-336-1541 ------------------------------------------------------------------------------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From largest at largest.org Thu Jun 1 12:54:07 2000 From: largest at largest.org (Joel) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: each function won't recognize hash deref Message-ID: starfire@zipcon.net wrote: > The retrieve subroutine of Storable.pm returns a hash ref. But when I > deref the return value and pass it to the each function, perl doesn't > recognize it as a hash: > > $data = retrieve("$sambadir/hitcount.dat"); > while (($key, $value) = each($$data)) { > ... > > Type of arg 1 to each must be hash (not scalar deref) at hitsbyid.cgi > line 41, near "$data)" syntax error at hitsbyid.cgi line 43, near "(" deref'ing a hash ref looks like this: while ( ($key, $value) = each %$data ) { Joel - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From campbell at geospiza.com Thu Jun 1 13:03:26 2000 From: campbell at geospiza.com (Dave Campbell) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: each function won't recognize hash deref References: <20000601173625.20396.qmail@zipcon.net> Message-ID: <3936A56E.73C24F8E@geospiza.com> Don't you mean: while (($key, $value) = each(%$data)) { ?? > The retrieve subroutine of Storable.pm returns a hash ref. But when I deref > the return value and pass it to the each function, perl doesn't recognize it > as a hash: > > $data = retrieve("$sambadir/hitcount.dat"); > while (($key, $value) = each($$data)) { - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From PDarley at serviceintelligence.com Thu Jun 1 16:43:58 2000 From: PDarley at serviceintelligence.com (Peter Darley) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Unitialized values Message-ID: <67AEB320B801D411AF6800902728A38001D756@SEAEX01> Friends, I have a script that is always throwing up warnings, and I can't for the life of me figure out what it's warning me about. I tried to find a description of the error in the perl man pages, but I'm still pretty new to it and didn't have any luck. Anyone have any ideas? The code is as follows, minus its subs (I added the numbering for reference): 1 #!/usr/bin/perl -w 2 3 ############################################### 4 # 5 # Page for setting up a new data source. 6 # It does several things: 7 # 1) Collects information about what client it goes too, what the name of it is, and gets the text file that contains the data 8 # 2) Collects information about the structure of the data 9 # 3) Imports data according to it's structure 20 # 11 ############################################### 12 13 use strict; 14 use CGI qw(:standard); 15 use DBI; 16 17 require "./DashboardLib.pl"; 18 19 my $dbSystem = DBI->connect("DBI:mysql:database=Development;host=localhost","root",""); 20 21 22 #Start Main 23 print header(); 24 25 if (param('Action') eq 'GetTableStructure') {print GetTableStructure($dbSystem)} 26 elsif ((param('Action') eq 'StartImport') || (!param())) {print StartImport($dbSystem)}; 27 28 $dbSystem->disconnect(); 29 #End Main The errors that I'm getting are: Use of uninitialized value at /usr/local/apache/cgi-bin/SetupDB.pl line 25. Use of uninitialized value at /usr/local/apache/cgi-bin/SetupDB.pl line 26. Any help y'all could provide would be much appreciated. Thanks, Peter Darley - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From campbell at geospiza.com Thu Jun 1 17:42:40 2000 From: campbell at geospiza.com (Dave Campbell) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Unitialized values References: <67AEB320B801D411AF6800902728A38001D756@SEAEX01> Message-ID: <3936E6E0.EF826378@geospiza.com> Seems hard to say without the subs what might be undefined. what about a couple of lines to catch the undefs before they are used, whereupon you can address them specifically. For example: 20 unless( defined $dbSystem ) { print "The variable dbSystem is undefined\n"; } 21 my $status = param('action'); 22 unless( defined $status ) { print "The function call param('action') returns undefined\n"; } > I have a script that is always throwing up warnings, and I can't > for the life of me figure out what it's warning me about. I tried to > find a description of the error in the perl man pages, but I'm still > pretty new to it and didn't have any luck. Anyone have any ideas? The > code is as follows, minus its subs (I added the numbering for > reference): > > 1 #!/usr/bin/perl -w > 2 > 3 ############################################### > 4 # > 5 # Page for setting up a new data source. > 6 # It does several things: > 7 # 1) Collects information about what client it goes too, what the > name of it is, and gets the text file that contains the data > 8 # 2) Collects information about the structure of the data > 9 # 3) Imports data according to it's structure > 20 # > 11 ############################################### > 12 > 13 use strict; > 14 use CGI qw(:standard); > 15 use DBI; > 16 > 17 require "./DashboardLib.pl"; > 18 > 19 my $dbSystem = > DBI->connect("DBI:mysql:database=Development;host=localhost","root",""); > 20 > 21 > 22 #Start Main > 23 print header(); > 24 > 25 if (param('Action') eq 'GetTableStructure') {print > GetTableStructure($dbSystem)} > 26 elsif ((param('Action') eq 'StartImport') || (!param())) {print > StartImport($dbSystem)}; > 27 > 28 $dbSystem->disconnect(); > 29 #End Main > > The errors that I'm getting are: > > Use of uninitialized value at /usr/local/apache/cgi-bin/SetupDB.pl line > 25. > Use of uninitialized value at /usr/local/apache/cgi-bin/SetupDB.pl line > 26. > > Any help y'all could provide would be much appreciated. > Thanks, > Peter Darley > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address -- Dave Campbell Geospiza, Inc. 619 N 35th St. Suite 101M (206) 633-4403 campbell@geospiza.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From LaurenS at bsquare.com Thu Jun 1 17:53:42 2000 From: LaurenS at bsquare.com (Lauren Smith) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Unitialized values Message-ID: <75514FC5ECC8D2118C8D00A0C9ED54DB91453A@obcmail1.bsquare.com> > -----Original Message----- > From: Peter Darley [mailto:PDarley@serviceintelligence.com] > Sent: Thursday, June 01, 2000 2:44 PM > To: SPUG (E-mail) > Subject: SPUG: Unitialized values > 24 > 25 if (param('Action') eq 'GetTableStructure') {print > GetTableStructure($dbSystem)} > 26 elsif ((param('Action') eq 'StartImport') || (!param())) {print > StartImport($dbSystem)}; > > Use of uninitialized value at > /usr/local/apache/cgi-bin/SetupDB.pl line > 25. > Use of uninitialized value at > /usr/local/apache/cgi-bin/SetupDB.pl line > 26. Without any more information, I'd guess that "param('Action')" does not contain a value. :-) Lauren - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From largest at largest.org Thu Jun 1 17:59:28 2000 From: largest at largest.org (Joel) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Unitialized values Message-ID: Peter Darley wrote: > I have a script that is always throwing up warnings, and I can't for > the life of me figure out what it's warning me about. I tried to find > a description of the error in the perl man pages, but I'm still pretty > new to it and didn't have any luck. Anyone have any ideas? The code > is as follows, minus its subs (I added the numbering for reference): [snip] > 25 if (param('Action') eq 'GetTableStructure') { > > 26 elsif ((param('Action') eq 'StartImport') || (!param())) { > The errors that I'm getting are: > > Use of uninitialized value at /usr/local/apache/cgi-bin/SetupDB.pl line > 25. > Use of uninitialized value at /usr/local/apache/cgi-bin/SetupDB.pl line > 26. Since you have warnings turned on, Perl is trying to alert you to anything that might possibly be a problem. Here, the culprit is "param('Action')" on lines 25 and 26. It is a potential problem because it is uninitialized--that is, you're using it to compare to another string without first checking to see whether it's even defined. Perl is warning you that you might be comparing something to an undefined value. Anytime you do a comparison (like 'eq') or regex match against a variable that is undef, you'll get this warning message. In fact even printing an undef variable will do it. For example: #!/usr/local/bin/perl -w use strict; my $foo = 10; print $foo, "\n"; # no problems so far... undef $foo; # but the next line will generate an error since $foo is undef print $foo, "\n"; # and so will this one print "Hi Mom!\n" if ( $foo =~ /bar/ ); __END__ How do you get around it in your case? You need to check whether "param('Action')" is defined before comparing it. TMTOWTDI, of course... # first check if "param('Action')" is true... my $action = param('Action'); if ( $action ) { if ( $action eq 'GetTableStructure') { print GetTableStructure($dbSystem) } elsif (($action eq 'StartImport') || (!param())) { print StartImport($dbSystem) } } else { print "No Action parameter defined!

"; } (also, there was a discussion on the merits of using the -w flag recently on this list. did you see it?) HTH! Joel - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From PFarrall at getthere.com Thu Jun 1 18:01:58 2000 From: PFarrall at getthere.com (Paul Farrall) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Unitialized values Message-ID: <7B9018C6292CD311A6550090274F3C5B024D755A@hq-mail1.getthere.com> Peter, It looks like you are calling "$dbSystem" when it's not defined. You might want to try checking return values for line 19: 19 my $dbSystem = DBI->connect("DBI:mysql:database=Development;host=localhost","root",""); Hope this helps! Paul Farrall Getthere.com -----Original Message----- From: Peter Darley [mailto:PDarley@serviceintelligence.com] Sent: Thursday, June 01, 2000 2:44 PM To: SPUG (E-mail) Subject: SPUG: Unitialized values Friends, I have a script that is always throwing up warnings, and I can't for the life of me figure out what it's warning me about. I tried to find a description of the error in the perl man pages, but I'm still pretty new to it and didn't have any luck. Anyone have any ideas? The code is as follows, minus its subs (I added the numbering for reference): 1 #!/usr/bin/perl -w 2 3 ############################################### 4 # 5 # Page for setting up a new data source. 6 # It does several things: 7 # 1) Collects information about what client it goes too, what the name of it is, and gets the text file that contains the data 8 # 2) Collects information about the structure of the data 9 # 3) Imports data according to it's structure 20 # 11 ############################################### 12 13 use strict; 14 use CGI qw(:standard); 15 use DBI; 16 17 require "./DashboardLib.pl"; 18 19 my $dbSystem = DBI->connect("DBI:mysql:database=Development;host=localhost","root",""); 20 21 22 #Start Main 23 print header(); 24 25 if (param('Action') eq 'GetTableStructure') {print GetTableStructure($dbSystem)} 26 elsif ((param('Action') eq 'StartImport') || (!param())) {print StartImport($dbSystem)}; 27 28 $dbSystem->disconnect(); 29 #End Main The errors that I'm getting are: Use of uninitialized value at /usr/local/apache/cgi-bin/SetupDB.pl line 25. Use of uninitialized value at /usr/local/apache/cgi-bin/SetupDB.pl line 26. Any help y'all could provide would be much appreciated. Thanks, Peter Darley - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From asherr at cs.unm.edu Thu Jun 1 18:26:03 2000 From: asherr at cs.unm.edu (Aryeh "Cody" Sherr) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Unitialized values In-Reply-To: <67AEB320B801D411AF6800902728A38001D756@SEAEX01> Message-ID: Peter, first of all, if you are ever wanting better warnings, use diagnostics; # spits out better messages also, the camel book has all of the warnings in an appendix, and what they mean. If those param() values are undefined, I'd guess that param returns undef, which the eq operator compares to something, so it complains. You could get around this with using the defined parameter to check if that value is defined before you start using it like it was. if ( defined(param("foo")) && param("foo") eq .... This is why I don't use -w at runtime anymore, although you can apparently turn certain warnings off (such as this one) in 5.6. Cody On Thu, 1 Jun 2000, Peter Darley wrote: >Friends, > I have a script that is always throwing up warnings, and I can't >for the life of me figure out what it's warning me about. I tried to >find a description of the error in the perl man pages, but I'm still >pretty new to it and didn't have any luck. Anyone have any ideas? The >code is as follows, minus its subs (I added the numbering for >reference): > >1 #!/usr/bin/perl -w >2 >3 ############################################### >4 # >5 # Page for setting up a new data source. >6 # It does several things: >7 # 1) Collects information about what client it goes too, what the >name of it is, and gets the text file that contains the data >8 # 2) Collects information about the structure of the data >9 # 3) Imports data according to it's structure >20 # >11 ############################################### >12 >13 use strict; >14 use CGI qw(:standard); >15 use DBI; >16 >17 require "./DashboardLib.pl"; >18 >19 my $dbSystem = >DBI->connect("DBI:mysql:database=Development;host=localhost","root",""); >20 >21 >22 #Start Main >23 print header(); >24 >25 if (param('Action') eq 'GetTableStructure') {print >GetTableStructure($dbSystem)} >26 elsif ((param('Action') eq 'StartImport') || (!param())) {print >StartImport($dbSystem)}; >27 >28 $dbSystem->disconnect(); >29 #End Main > > The errors that I'm getting are: > >Use of uninitialized value at /usr/local/apache/cgi-bin/SetupDB.pl line >25. >Use of uninitialized value at /usr/local/apache/cgi-bin/SetupDB.pl line >26. > > Any help y'all could provide would be much appreciated. >Thanks, >Peter Darley > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From trance at drizzle.com Thu Jun 1 17:40:39 2000 From: trance at drizzle.com (Christopher/Shalah) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Unitialized values In-Reply-To: <67AEB320B801D411AF6800902728A38001D756@SEAEX01> Message-ID: <000101bfcc27$57144400$68c1a2d8@aknot> You are probably failing your creation of the $dbSetup object. change line 19 to read: my $dbSystem = DBI->connect("DBI:mysql:database=Development;host=localhost","root","") or die "Unable to create dbSetup: $!"; --Christopher -----Original Message----- From: owner-spug-list@pm.org [mailto:owner-spug-list@pm.org]On Behalf Of Peter Darley Sent: Thursday, June 01, 2000 2:44 PM To: SPUG (E-mail) Subject: SPUG: Unitialized values Friends, I have a script that is always throwing up warnings, and I can't for the life of me figure out what it's warning me about. I tried to find a description of the error in the perl man pages, but I'm still pretty new to it and didn't have any luck. Anyone have any ideas? The code is as follows, minus its subs (I added the numbering for reference): 1 #!/usr/bin/perl -w 2 3 ############################################### 4 # 5 # Page for setting up a new data source. 6 # It does several things: 7 # 1) Collects information about what client it goes too, what the name of it is, and gets the text file that contains the data 8 # 2) Collects information about the structure of the data 9 # 3) Imports data according to it's structure 20 # 11 ############################################### 12 13 use strict; 14 use CGI qw(:standard); 15 use DBI; 16 17 require "./DashboardLib.pl"; 18 19 my $dbSystem = DBI->connect("DBI:mysql:database=Development;host=localhost","root",""); 20 21 22 #Start Main 23 print header(); 24 25 if (param('Action') eq 'GetTableStructure') {print GetTableStructure($dbSystem)} 26 elsif ((param('Action') eq 'StartImport') || (!param())) {print StartImport($dbSystem)}; 27 28 $dbSystem->disconnect(); 29 #End Main The errors that I'm getting are: Use of uninitialized value at /usr/local/apache/cgi-bin/SetupDB.pl line 25. Use of uninitialized value at /usr/local/apache/cgi-bin/SetupDB.pl line 26. Any help y'all could provide would be much appreciated. Thanks, Peter Darley - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From rush at citylinq.com Fri Jun 2 00:19:41 2000 From: rush at citylinq.com (Rush Family) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Perl/Tk demos? In-Reply-To: <000101bfcc27$57144400$68c1a2d8@aknot> Message-ID: Hi everyone -- I am new to Perl and to this Perl discussion group. I run the ActiveState release of Perl for Win32, build 522, and their dev kit version 1.2.4. Where can I find an exhaustive demo of Tk on the Internet or on a CD-ROM? One that shows all the different kinds of widgets and the code for each. The Tk module includes instructions for writing your own widget demos, but I am hoping there is one huge monolithic TkDemo.pl already written and just waiting for me. Thanks! Best regards, Jason Rush - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From starfire at zipcon.net Fri Jun 2 08:32:22 2000 From: starfire at zipcon.net (Richard Anderson) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Re: Perl/Tk demos? References: Message-ID: <00be01bfcc96$feef0060$3388ddd1@adcom133> A good starting point might be my Unix Scripting Languages Resources page at http://www.unixscripts.com/rayco/support/resources.html#scripting . This has links to some good Tcl/Tk resources. Scroll up for Perl links. Richard.Anderson@unixscripts.com www.zipcon.net/~starfire/home (personal) www.unixscripts.com (corporate) ----- Original Message ----- From: "Rush Family" To: Sent: Thursday, June 01, 2000 10:19 PM Subject: SPUG: Perl/Tk demos? > > Hi everyone -- I am new to Perl and to this Perl discussion group. > > I run the ActiveState release of Perl for Win32, build 522, and their dev > kit version 1.2.4. > > Where can I find an exhaustive demo of Tk on the Internet or on a CD-ROM? > One that shows all the different kinds of widgets and the code for each. The > Tk module includes instructions for writing your own widget demos, but I am > hoping there is one huge monolithic TkDemo.pl already written and just > waiting for me. > > Thanks! > > Best regards, > > Jason Rush > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From bill at celestial.com Fri Jun 2 18:01:28 2000 From: bill at celestial.com (Bill Campbell) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Perl/Tk demos? In-Reply-To: ; from rush@citylinq.com on Thu, Jun 01, 2000 at 10:19:41PM -0700 References: <000101bfcc27$57144400$68c1a2d8@aknot> Message-ID: <20000602160128.A32548@kstarr.celestial.com> On Thu, Jun 01, 2000 at 10:19:41PM -0700, Rush Family wrote: > >Hi everyone -- I am new to Perl and to this Perl discussion group. > >I run the ActiveState release of Perl for Win32, build 522, and their dev >kit version 1.2.4. > >Where can I find an exhaustive demo of Tk on the Internet or on a CD-ROM? >One that shows all the different kinds of widgets and the code for each. The >Tk module includes instructions for writing your own widget demos, but I am >hoping there is one huge monolithic TkDemo.pl already written and just >waiting for me. How about the perl::Tk sources? There are extensive demos there. Bill -- INTERNET: bill@Celestial.COM Bill Campbell; Celestial Systems, Inc. UUCP: camco!bill PO Box 820; 6641 E. Mercer Way FAX: (206) 232-9186 Mercer Island, WA 98040-0820; (206) 236-1676 URL: http://www.celestial.com/ ``It's just got so that 90 percent of the people in this country don't give a damn. Politics ain't worrying this country one tenth as much as parking space.'' Will Rogers - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From jsouza at cobaltgroup.com Fri Jun 2 19:03:31 2000 From: jsouza at cobaltgroup.com (Jonathan Souza) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Perl jobs at The Cobalt Group References: <67AEB320B801D411AF6800902728A38001D756@SEAEX01> <3936E6E0.EF826378@geospiza.com> Message-ID: <39384B53.6B01DF2E@cobaltgroup.com> I know that they have work orders for both Perl and Java programmers of various competences. Here is one of the 'official' job descriptions taken off of the web site. UNIX Software Developers Responsible for scripting and systems programming for our websites and online UNIX databases. Perl or C programming experience and familiarity with the Web, HTML, UNIX, CGI scripting are required. Familiarity with Java programming for Web applications and experience with UNIX databases such as Oracle, a plus. Backgrounds in Object Oriented programming & user Interface design are big pluses. BA/BS degree required (CS pref). Sending me your resume allows me to hand it to my boss, bypassing the 'HR Blackhole'. -- Jonathan Souza Software Engineer: Product Development The Cobalt Group: jsouza@cobaltgroup.com tel: 206.269.6363 ext 8289 Direct: 206.219.8289 800.909.8244 Fax: 206.219.8399 Home: courtassassin@home.com Phone: 206.762.1905 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Fri Jun 2 19:57:13 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: use.perl.org Now Up! Message-ID: <20000602175713.A5436@timji.consultix.wa.com> Check out the new Perl Advocacy web-site, use.perl.org. It's a collection of Perl-related articles, in the slashdot.org format. There are some interesting notes on the PerlWhirl Alaskan cruise that's currently under way, among other things. *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES; 6/12-> Intermediate Perl 6/15-> Adv. Pattern Matching w/Perl | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From rush at citylinq.com Fri Jun 2 23:19:00 2000 From: rush at citylinq.com (Rush Family) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Perl/Tk demos? In-Reply-To: <20000602160128.A32548@kstarr.celestial.com> Message-ID: Thank you everyone for your Tk demo help. Widget.bat is exactly what I wanted. By the way does anyone know anything about Visual Perl for Visual Studio 7 beyond what's on the ActiveState website? If anyone hears anything, even rumors, I'd like to hear. http://www.activestate.com/Products/VisualPerl.html http://www.activestate.com/Corporate/Media_Center/News/Press959117519.html Best regards, Jason Rush - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Sat Jun 3 15:21:03 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Publicizing Damian's Talks Message-ID: <20000603132103.A7873@timji.consultix.wa.com> Fellow SPUGsters, I'm looking for some help in publicizing the July talks of Damian Conway that will take place in Seattle and Kirkland. Specifically, I'd like to send flyers to folks from Perl-using companies for posting on company Bulletin Boards. Any of you who use Perl in your companies and would be willing to find a few thumbtacks and help by posting notices please respond with your US Mail address, and an indication of how many copies of each announcement you'd need (for multiple Bulletin Boards, etc.). And if you also have electronic Bulletin Boards that you can post announcements on, please post the announcements attached to this message there. Thanks! ========================================================== | Tim Maher, Ph.D. Tel/Fax: (206)781-UNIX | | SPUG Founder & Leader Email: spug@halcyon.com | | Seattle Perl Users Group HTTP: www.halcyon.com/spug | ========================================================== -------------- next part -------------- Seattle Perl Users Group (SPUG) Meetings, July 2000 Sponsored by SPUG and NeoInformatics, www.neoinformatics.com *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* MULTIMETHODS: Polymorphism Gone Mad Dr. Damian Conway, Monash University, Australia SPUG Meeting, Union Bank of California., 5th and Madison, Seattle July 5, 6:45pm Abstract A world gone crazy, as method calls throw off their shackles and start telling objects "Who ya gonna call?" Plus the secret shame of subroutine overloading. In Perl! A sober and serious talk discussing the technique of multiple dispatch of object methods, and its implementation in Perl. Ad hoc approaches will be described and dismissed, and use of the Class::Multimethods module advocated and explained. The implications of the multimethod construct as a mechanism for signature-based subroutine overloading will also be pondered. -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Quantum Superpositions and the First Virtue Dr. Damian Conway, Monash University, Australia E-SPUG Meeting, Lucent Technologies, Redmond WA July 6, 7:00pm Abstract Take two quantized disjunctive/conjunctive equiprobable scalar datastructures, add a dash of multidimensional polymorphism, a handful of redefined operators, and a pinch of breadth-first optree evaluation. Simmer gently in the Principle of Least Effort. Decant into a grandiosely named module. Now serve vector operations (prime generation, list membership, list extrema, etc.) without loops or recursion. (Tim asked me if it's meant to be a parody lecture. I know it looks that way, but actually it's just like my Coy paper at last year's TPC: serious science and useful Perl techniques smuggled into unsuspecting brains hidden behind a dazzlingly stupid idea - Damian) *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* Damian Conway Professional Seminars, presented by Consultix (7/6,7/7) Dr. Damian Conway of Monash University, Australia, will be presenting two one-day seminars from July 6-7 in the Seattle area entitled "ADVANCED OBJECT ORIENTED PERL" and "BEYOND REGEXES: TEXT PARSING with PERL MODULES". Unlike Dr. Conway's brief SPUG talks, these are full-day training seminars that teach programming professionals how to accomplish important tasks using Perl. These seminars are being arranged by Consultix, whose web site (www.consultix-inc.com) provides further details. -------------- next part -------------- ADVANCED OBJECT-ORIENTED PERL Dr. Damian Conway July 6, 2000, Kirkland, WA USA Presented by: Consultix, www.consultix-inc.com SPEAKER: Dr. Damian Conway School of Computer Science and Software Engineering, Monash University, Clayton, 3168 AUSTRALIA TARGET AUDIENCE: Perl programmers who have either completed Tom Christiansen's introductory object-oriented Perl tutorial, read and absorbed Chapters 1 through 3 of "Object Oriented Perl", taken the Consultix "Intermediate Perl Programming" class, or who have otherwise acquired a basic familiarity with simple OO Perl. WHAT ATTENDEES WILL LEARN: This tutorial will show you how to build on the basic object-oriented Perl techniques you already know and unlock more of the power of Perl's OO capabilities. Attendees will learn: * how to use pseudo-hashes and the standard fields.pm and base.pm modules, * how (and when) to bless arrays and scalars, * three different ways to implement data hiding for Perl objects (including the Tie::SecureHash module), * how Perl implements inheritance and polymorphism (and how you can change the rules of either), * how to simulate scalars, arrays, hashes, and typeglobs using ties, * the features (and traps) of operator overloading in Perl, * two easy ways to build complete classes (semi-)automatically, * how to do design-by-contract programming in OO Perl (using the Class::Contract module), * two ways to do generic programming in Perl, * how to use the Class::Classless module to build OO programs without classes, * how to use multiple dispatch (polymorphism on steroids) to implement event-driven class hierarchies for simulation and GUI applications. SEMINAR OUTLINE: * Review of Perl OO basics - packages, references, blessing - the three rules - Example: a dog-tag class * Non-hash-based objects - arrays as objects - scalars as objects - Examples: hash re-iterators; OO bitstrings * Pseudo-hashes - what they are, how to use them as objects - the fields.pm module - compile-time type checking * Automating class construction - Class::Struct - Other class construction modules - Example: A CD library * Inheritance - revision of concepts - how they work in Perl - @ISA, isa(), can(), SUPER - Example: a restricted transceiver class * Polymorphism - When and how to use it - Variations on the theme - Example: OO lexical analysis - Examples: a safer transceiver class * Encapsulation - the pros and cons of data hiding - encapsulation via closures - encapsulation via scalars - encapsulation via the Tie::SecureHash module - Example: the dog-tag class thrice revisited * Inheritance revisited - tricks with inherited constructors and destructors - abstract methods - attribute collisions - inheritance and pseudohashes: the base.pm module * Ties - simulating implementing scalars and hashes - scalar examples (a bounded scalar; proxies) - hash example (a multi-iterable hash) * Operator overloading - overview and limitations of mechanism - overloading operations, conversions, and constants - problems with references - Example: Klingon arithmetic * Grafting other OO models onto Perl - classless programming with Class::Classless - design-by-contract with Class::Contract - Examples: Classless network control; Contractual threading * Generic programming - Why you don't need it in Perl - How to do it anyway - Examples: generic lists; generic trees * Multiple dispatch - when regular polymorphism isn't enough - cascaded polymorphism - table driven dispatch - Class::Multimethods - Example: GUI event-loop programming SPEAKER BIOGRAPHY: Damian Conway holds a Ph.D. in Computer Science and is a Senior Lecturer in Computer Science and Software Engineering at Monash University, Melbourne, Australia. He is the author of numerous well-known modules including: Parse::RecDescent, Text::Balanced, Lingua::EN::Inflect, Class::Multimethods, and Coy (all available from your local CPAN mirror). Damian was the winner of both the 1998 and 1999 Larry Wall Awards for Practical Utility. He is a member of the technical committee for The Perl Conference 4.0, the convener of the annual Perl haiku contest, a columnist for The Perl Journal, and author of the book "Object Oriented Perl". -------------- next part -------------- BEYOND REGEXES: Text Parsing with Perl Modules Dr. Damian Conway July 7, 2000, Kirkland, WA USA Presented by: Consultix, www.consultix-inc.com SPEAKER: Dr. Damian Conway School of Computer Science and Software Engineering, Monash University, Clayton, 3168 AUSTRALIA TARGET AUDIENCE: Perl programmers who are familiar with simple regular expressions and the use of modules. The techniques presented will be useful to anyone who needs to process structured text of any kind. WHAT ATTENDEES WILL LEARN: This seminar will show you how to use a range of standard Perl features and several CPAN modules (in particular, Parse::RecDescent) to decipher and process a variety of complex data and command formats. It's a practical introduction to the techniques of grammar-based recursive-descent parsing. You will learn: * how to design and build parsers to process Apache configuration files and log data, * how to process structured expressions (e.g. search engine queries), * how to balance nested brackets and match delimiters without a regular expression, * how to fold, spindle and mutilate the comments in a C program, * how to dissect C++ type declarations with a self-adapting parser, * how to allow embedded Perl code in your own data format or command language, * how to convert natural language queries into SQL, * how to design and build self-modifying parsers to process Apache configuration files and log data, * how to pull pesky unmatched

tags from HTML, * how to deal with ambiguous data by parsing it in multiple universes simultaneously, * how to get Parse::RecDescent to write most of your grammar for you, * how to parse modular text (e.g. source with #includes in it), * how to pre-filter your source code by tricking Perl into (nearly) parsing Perl, * how to debug Parse::RecDescent parsers efficiently and how to improve the efficiency of your Parse::RecDescent grammars There'll even be some useful stuff, like how to write a program that does stand-up comedy. You'll also discover the psychedelic secrets of Randal's beatnik poetry generator, and learn how to earn thousands in your spare time by generating scholarly articles for modern Philosophy journals. SEMINAR OUTLINE: * A brief history of parsing - grammars, rules, recursive descent, etc. * Implementing parsers - top-down vs bottom-up approaches * Useful tools - Text::Balanced, Parse::Yapp, perl-byacc, Parse::RecDescent * Simple parsing - Parsing delimited text, parsing Perl subsets * Parsing data - Parsing Apache log files - optional subrules, list parsing - run-time parser generation * Parsing input - The Text::Query modules - OO parsing - operator precedence, lists, look-ahead, rejections, etc. * Parsing code - parsing C and C++ - stateful grammars - porting yacc grammars (including left-recursion) - self-extending parsers, committing rules, deferred actions - grammar precompilation * Parsing natural language - generating SQL queries for natural language input - synthetic stand-up via reciprocal parsers * Miscellaneous advanced features of Text::Balanced - precompiling delimiter extractions - extracting tagged text - extracting Perl variables - extracting mixed components * Miscellaneous extra features of Parse::RecDescent - Named items (the %item array) - Debugging grammars: , , , and - Context information: $thisline, $lastoffset, @itempos, etc. - Extreme prejudice: the directive * Non-deterministic parsing - tracking "goodness-of-match" - the and directives * Pre-tokenization - the directive - token-based parsing * Automatic grammar generation - autoactions - autostubbing - autotrees - the , , and directives * Generic rules - the directive - subrule arguments: @arg and %arg * Handling distributed text - processing file inclusions recursively - processing file inclusions by input modification - other uses of input modification * Semi-grammatical parsing - when Parse::RecDescent is overkill and regexes don't appeal - CSV revisited, text interpolation, simple command interfaces * Self-modification - Run-time parser generation and self-extending parsers revisited - A self-modifying Apache config/log file parser * (Nearly) parsing Perl - parsing with Text::Balanced on Occam's Razor - source code filtering * Metagrammars - building a grammar for parsing grammars - beat poetry and postmodern literature SPEAKER BIOGRAPHY: Damian Conway holds a Ph.D. in Computer Science and is a Senior Lecturer in Computer Science and Software Engineering at Monash University, Melbourne, Australia. He is the author of numerous well-known modules including: Parse::RecDescent, Text::Balanced, Lingua::EN::Inflect, Class::Multimethods, and Coy (all available from your local CPAN mirror). Damian was the winner of both the 1998 and 1999 Larry Wall Awards for Practical Utility. He is a member of the technical committee for The Perl Conference 4.0, the convener of the annual Perl haiku contest, a columnist for The Perl Journal, and author of the book "Object Oriented Perl". From tim at consultix-inc.com Sat Jun 3 15:55:15 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Registering for Conway $eminars Message-ID: <20000603135515.A7984@timji.consultix.wa.com> SPUGsters, As most of you know by now, my company, Consultix, has arranged to host Damian Conway's presentations of two full-day seminars during the 7/6-7/7 period (on "Adv. OOP" and "Text Parsing"). It's important for me to have a reasonably accurate forecast of the likely attendance, so we don't get caught short by late registrants causing a conference-room overflow, or, even worse, prematurely cancel a seminar whose potential registrants are just procrastinating. So I'd be grateful if those who think they might attend would please drop me an Email letting me know, and I urge those serious about attending to register soon, to ensure a place in class. Brief summaries of these seminars follow below, and full details in the attachments. Thanks, *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES; 6/12-> Intermediate Perl 6/15-> Adv. Pattern Matching w/Perl | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* ADVANCED OBJECT-ORIENTED PERL, by Damian Conway July 6, 2000. Kirkland, WA USA DESCRIPTION: This seminar will show you how to build on the basic object-oriented Perl techniques you already know and unlock more of the power of Perl's OO capabilities. Topics include Pseudo-hashes, fields.pm, base.pm, data hiding, Tie::SecureHash, inheritance, polymorphism, operator overloading, automatic class creation, design-by-contract programming, generic programming, Class::Classless, and multiple dispatch. Details attached, and also available at: http://www.consultix-inc.com/advoop.html BEYOND REGEXES: TEXT PARSING WITH PERL MODULES, by D. Conway July 7, 2000. Kirkland, WA USA DESCRIPTION: This seminar will show you how to use a range of standard Perl features and several CPAN modules (in particular, Parse::RecDescent) to decipher and process a variety of complex data and command formats. It's a practical introduction to the techniques of grammar-based recursive-descent parsing. Examples include: converting queries to regexes, parsing Apache error-log and configuration files, filtering DNA sequences, and natural language processing. Details attached, and also available at: http://www.consultix-inc.com/parsing.html -------------- next part -------------- ADVANCED OBJECT-ORIENTED PERL Dr. Damian Conway July 6, 2000, Kirkland, WA USA Web Version: http://www.consultix-inc.com/advoop.html Sponsored by CONSULTIX, http://www.consultix-inc.com SPEAKER: Dr. Damian Conway School of Computer Science and Software Engineering, Monash University, Clayton, 3168 AUSTRALIA TARGET AUDIENCE: Perl programmers who have either completed Tom Christiansen's introductory object-oriented Perl tutorial, read and absorbed Chapters 1 through 3 of "Object Oriented Perl", taken the Consultix "Intermediate Perl Programming" class, or who have otherwise acquired a basic familiarity with simple OO Perl. WHAT ATTENDEES WILL LEARN: This tutorial will show you how to build on the basic object-oriented Perl techniques you already know and unlock more of the power of Perl's OO capabilities. Attendees will learn: * how to use pseudo-hashes and the standard fields.pm and base.pm modules; * how (and when) to bless arrays and scalars; * three different ways to implement data hiding for Perl objects (including the Tie::SecureHash module); * how Perl implements inheritance and polymorphism (and how you can change the rules of either); * how to simulate scalars, arrays, hashes, and typeglobs using ties; * the features (and traps) of operator overloading in Perl; * two easy ways to build complete classes (semi-)automatically; * how to do design-by-contract programming in OO Perl (using the Class::Contract module); * two ways to do generic programming in Perl; * how to use the Class::Classless module to build OO programs without classes; * how to use multiple dispatch (polymorphism on steroids) to implement event-driven class hierarchies for simulation and GUI applications. SEMINAR OUTLINE: * Review of Perl OO basics - packages, references, blessing - the three rules - Example: a dog-tag class * Non-hash-based objects - arrays as objects - scalars as objects - Examples: hash re-iterators; OO bitstrings * Pseudo-hashes - what they are, how to use them as objects - the fields.pm module - compile-time type checking * Automating class construction - Class::Struct - Other class construction modules - Example: A CD library * Inheritance - revision of concepts - how they work in Perl - @ISA, isa(), can(), SUPER - Example: a restricted transceiver class * Polymorphism - When and how to use it - Variations on the theme - Example: OO lexical analysis - Examples: a safer transceiver class * Encapsulation - the pros and cons of data hiding - encapsulation via closures - encapsulation via scalars - encapsulation via the Tie::SecureHash module - Example: the dog-tag class thrice revisited * Inheritance revisited - tricks with inherited constructors and destructors - abstract methods - attribute collisions - inheritance and pseudohashes: the base.pm module * Ties - simulating implementing scalars and hashes - scalar examples (a bounded scalar; proxies) - hash example (a multi-iterable hash) * Operator overloading - overview and limitations of mechanism - overloading operations, conversions, and constants - problems with references - Example: Klingon arithmetic * Grafting other OO models onto Perl - classless programming with Class::Classless - design-by-contract with Class::Contract - Examples: Classless network control; Contractual threading * Generic programming - Why you don't need it in Perl - How to do it anyway - Examples: generic lists; generic trees * Multiple dispatch - when regular polymorphism isn't enough - cascaded polymorphism - table driven dispatch - Class::Multimethods - Example: GUI event-loop programming SPEAKER BIOGRAPHY: Damian Conway holds a Ph.D. in Computer Science and is a Senior Lecturer in Computer Science and Software Engineering at Monash University, Melbourne, Australia. He is the author of numerous well-known modules including: Parse::RecDescent, Text::Balanced, Lingua::EN::Inflect, Class::Multimethods, and Coy (all available from your local CPAN mirror). Damian was the winner of both the 1998 and 1999 Larry Wall Awards for Practical Utility. He is a member of the technical committee for The Perl Conference 4.0, the convener of the annual Perl haiku contest, a columnist for The Perl Journal, and author of the book "Object Oriented Perl". -------------- next part -------------- BEYOND REGEXES: Text Parsing with Perl Modules Dr. Damian Conway July 7, 2000, Kirkland, WA USA Web Version: http://www.consultix-inc.com/parsing.html Sponsored by CONSULTIX, http://www.consultix-inc.com SPEAKER: Dr. Damian Conway School of Computer Science and Software Engineering, Monash University, Clayton, 3168 AUSTRALIA TARGET AUDIENCE: Perl programmers who are familiar with simple regular expressions and the use of modules. The techniques presented will be useful to anyone who needs to process structured text of any kind. WHAT ATTENDEES WILL LEARN: This seminar will show you how to use a range of standard Perl features and several CPAN modules (in particular, Parse::RecDescent) to decipher and process a variety of complex data and command formats. It's a practical introduction to the techniques of grammar-based recursive-descent parsing. You will learn: * how to design and build parsers to process Apache configuration files and log data; * how to process structured expressions (e.g. search engine queries); * how to balance nested brackets and match delimiters without a regular expression; * how to fold, spindle and mutilate the comments in a C program; * how to dissect C++ type declarations with a self-adapting parser; * how to allow embedded Perl code in your own data format or command language; * how to convert natural language queries into SQL; * how to design and build self-modifying parsers to process Apache configuration files and log data; * how to pull pesky unmatched

tags from HTML; * how to deal with ambiguous data by parsing it in multiple universes simultaneously; * how to get Parse::RecDescent to write most of your grammar for you; * how to parse modular text (e.g. with source with #includes in it); * how to pre-filter your source code by tricking Perl into (nearly) parsing Perl; * how to debug Parse::RecDescent parsers efficiently and how to improve the efficiency of your Parse::RecDescent grammars There'll even be some useful stuff, like how to write a program that does stand-up comedy. You'll also discover the psychedelic secrets of Randal's beatnik poetry generator, and learn how to earn thousands in your spare time by generating scholarly articles for modern Philosophy journals. SEMINAR OUTLINE: * A brief history of parsing - grammars, rules, recursive descent, etc. * Implementing parsers - top-down vs bottom-up approaches * Useful tools - Text::Balanced, Parse::Yapp, perl-byacc, Parse::RecDescent * Simple parsing - Parsing delimited text, parsing Perl subsets * Parsing data - Parsing Apache log files - optional subrules, list parsing - run-time parser generation * Parsing input - The Text::Query modules - OO parsing - operator precedence, lists, look-ahead, rejections, etc. * Parsing code - parsing C and C++ - stateful grammars - porting yacc grammars (including left-recursion) - self-extending parsers, committing rules, deferred actions - grammar precompilation * Parsing natural language - generating SQL queries for natural language input - synthetic stand-up via reciprocal parsers * Miscellaneous advanced features of Text::Balanced - precompiling delimiter extractions - extracting tagged text - extracting Perl variables - extracting mixed components * Miscellaneous extra features of Parse::RecDescent - Named items (the %item array) - Debugging grammars: , , , and - Context information: $thisline, $lastoffset, @itempos, etc. - Extreme prejudice: the directive * Non-deterministic parsing - tracking "goodness-of-match" - the and directives * Pre-tokenization - the directive - token-based parsing * Automatic grammar generation - autoactions - autostubbing - autotrees - the , , and directives * Generic rules - the directive - subrule arguments: @arg and %arg * Handling distributed text - processing file inclusions recursively - processing file inclusions by input modification - other uses of input modification * Semi-grammatical parsing - when Parse::RecDescent is overkill and regexes don't appeal - CSV revisited, text interpolation, simple command interfaces * Self-modification - Run-time parser generation and self-extending parsers revisited - A self-modifying Apache config/log file parser * (Nearly) parsing Perl - parsing with Text::Balanced on Occam's Razor - source code filtering * Metagrammars - building a grammar for parsing grammars - beat poetry and postmodern literature SPEAKER BIOGRAPHY: Damian Conway holds a Ph.D. in Computer Science and is a Senior Lecturer in Computer Science and Software Engineering at Monash University, Melbourne, Australia. He is the author of numerous well-known modules including: Parse::RecDescent, Text::Balanced, Lingua::EN::Inflect, Class::Multimethods, and Coy (all available from your local CPAN mirror). Damian was the winner of both the 1998 and 1999 Larry Wall Awards for Practical Utility. He is a member of the technical committee for The Perl Conference 4.0, the convener of the annual Perl haiku contest, a columnist for The Perl Journal, and author of the book "Object Oriented Perl". From tim at consultix-inc.com Mon Jun 5 00:22:14 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: June Meeting Idea: Damian Warm-Up Message-ID: <20000604222214.A15737@timji.consultix.wa.com> SPUG-o-maniacs, Nobody is twisting my arm to get permission to host this month's meeting, so I'm trying to think up clever ploys to get people involved and somehow manage to entertain the audience, and keep SPUG alive, as usual! 8-} Here's what I've come up with: in preparation for Damian Conway's visit, let's review some of his writings and ponder some of his code, share insights, and identify grey areas that we can ask him to elucidate for us during his visit. So I'm looking for volunteers to make short presentations on the following: your favorite TPJ articles and modules by Damian, sections of his OOP book, and any other resources I've overlooked. What do you think about this idea, and who wants "first dibbies" on which items? *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES; 6/12-> Intermediate Perl 6/15-> Adv. Pattern Matching w/Perl | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From PDarley at serviceintelligence.com Mon Jun 5 08:43:25 2000 From: PDarley at serviceintelligence.com (Peter Darley) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Uninitialized Values Message-ID: <67AEB320B801D411AF6800902728A38001D75F@SEAEX01> Friends, Thanks for all the feedback on my problem with the warnings from -w! Thanks, Peter D. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Mon Jun 5 11:46:48 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Re: Registering for Conway $eminars In-Reply-To: <20000603135515.A7984@timji.consultix.wa.com>; from tim@consultix-inc.com on Sat, Jun 03, 2000 at 01:55:15PM -0700 References: <20000603135515.A7984@timji.consultix.wa.com> Message-ID: <20000605094648.C17230@timji.consultix.wa.com> SPUGadelics, There seems to be some confusion over the various talks Damian will be giving in Seattle; there are two free SPUG talks, on the evenings of 7/5 and 7/6, and two fee-based full-day seminars on 7/6 and 7/7, to be held in a conference room of an Eastside hotel. The seminars are priced at $475 each, same as the EarlyBird rates at The Perl Conference. Why attend in Seattle? * if already in Pacific NorthWest, no need to travel to California * if attending Conference anyway, attending in Kirkland frees up valuable conference time for other tutorials in same time-slot * you'd receive greater personal attention by attending with a smaller group * you'd allow Damian to receive a much greater share of your seminar fee than he'd get at TPC, due to much lower expenses I'm trying to estimate the likely attendance for the hotel events, to ensure a room of adequate size, and sufficient catering. If you're planning to attend one or both of these seminars and you haven't yet registered (http://www.consultix-inc.com/reg.html), please get in touch with me. Brief summaries of these seminars follow below, and full details can be found at: www.consultix-inc.com Full details of the SPUG talks can be found at: www.halcyon.com/spug/#Damian_talks ========================================================== | Tim Maher, Ph.D. Tel/Fax: (206) 781-UNIX | | SPUG Founder & Leader Email: spug@halcyon.com | | Seattle Perl Users Group HTTP: www.halcyon.com/spug | ========================================================== ADVANCED OBJECT-ORIENTED PERL, by Damian Conway July 6, 2000. Kirkland, WA USA DESCRIPTION: This seminar will show you how to build on the basic object-oriented Perl techniques you already know and unlock more of the power of Perl's OO capabilities. Topics include Pseudo-hashes, fields.pm, base.pm, data hiding, Tie::SecureHash, inheritance, polymorphism, operator overloading, automatic class creation, design-by-contract programming, generic programming, Class::Classless, and multiple dispatch. Details available at: http://www.consultix-inc.com/advoop.html BEYOND REGEXES: TEXT PARSING WITH PERL MODULES, by D. Conway July 7, 2000. Kirkland, WA USA DESCRIPTION: This seminar will show you how to use a range of standard Perl features and several CPAN modules (in particular, Parse::RecDescent) to decipher and process a variety of complex data and command formats. It's a practical introduction to the techniques of grammar-based recursive-descent parsing. Examples include: converting queries to regexes, parsing Apache error-log and configuration files, filtering DNA sequences, and natural language processing. Details available at: http://www.consultix-inc.com/parsing.html - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From davidpa at lucent.com Mon Jun 5 14:53:46 2000 From: davidpa at lucent.com (Patterson, David S (David)) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Re: Damian Conway's Free Talk on 7/6 Message-ID: SPUGsters & E-SPUGsters, I'd also like to request an RSVP from you if you wish to attend the free Damian Conway talk at Lucent on 7/6 at 7:00 pm. Our meeting room has max capacity of 50 people, and I would hate to turn anyone away at the door! Thanks, > --- "Sometimes we miss happiness by looking too far for things nearby..." > David Patterson > Software Engineer > Lucent Technologies * > 6464 185th Ave NE > Redmond, WA 98052-6736 > 425-558-8008 x 2172 > 888-501-4835 Pgr > davidpa@lucent.com > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From keith at photoworks.com Tue Jun 6 10:08:28 2000 From: keith at photoworks.com (Keith Aaron) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: How do I fix myself up? [Desperately seeking HELP] Message-ID: Now I get a different error when I try to execute the Perl script: C:\WINNT\system32\cmd.exe /c ftpget.pl -p -C -d "E:/source/filmworks/SFW.SYS/SFW.BP/PD.JOBLOGGER" "filmworks:" DEBUG OUTPUT: User: keitha Server: filmworks Rpath: /source/filmworks/SFW.SYS/SFW.BP/PD.JOBLOGGER Lpath: E:/source/filmworks/SFW.SYS/SFW.BP/PD.JOBLOGGER Create: 1 <<...>> Net::FTP=GLOB(0x8d6f234)<<< 200 TYPE I ok. Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks/SFW.SYS/SFW.BP/ Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks/SFW.SYS/SFW.BP/ Error 17: File exists Net::FTP=GLOB(0x8d6f234)>>> MKD /source Net::FTP=GLOB(0x8d6f234)<<< 550 /source Error 17: File exists Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks Error 17: File exists Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks/SFW.SYS Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks/SFW.SYS Error 17: File exists Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks/SFW.SYS/SFW.BP Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks/SFW.SYS/SFW.BP Error 17: File exists Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks/SFW.SYS/SFW.BP/ Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks/SFW.SYS/SFW.BP/ Error 17: File exists Net::FTP=GLOB(0x8d6f234)>>> PWD Net::FTP=GLOB(0x8d6f234)<<< 257 "/home/keitha" is current directory. Can't locate object method "cd" via package "Net::FTP" at C:/Perl/site/lib/Net/F TP.pm line 464. Net::FTP=GLOB(0x8d6f234)>>> QUIT Net::FTP=GLOB(0x8d6f234)<<< 221 Goodbye. 255 returned Hit any key to close this window... It must be failing on the line: if ($rpath) {$ftp->cwd($rpath);} ... but I don't see why. Are there more packages I need to install? And how do I find out what I need to install when something is missing? -----Original Message----- From: Keith Aaron Sent: Thursday, June 01, 2000 6:39 PM To: 'AHands@unforgettable.com' Subject: RE: SPUG: How do I fix myself up? [Desperately seeking HELP] Here's the script (it ain't elegant, but it works on the old system): #!/usr/bin/perl # simple ftp client for use from vim or the command-line! # type ftpget without arguments to find # # The file will be got/put from/to the path provided, but will be stored # locally in the current directory as the base file name. # # The server will be looked up in the table %servers, which will define the # logon for that server (otherwise, be anonymous) # # written by: Ron Aaron # last update: 01/24/98 14:54:49 # ############################################################################ ### # 09-24-99 Keith W. Aaron # -Allow different source and target; distinguish between drive and server: # ftpget -p E:\src\fw\SFW.SYS\PROG server:[path] # ftpget -G server:\src\fw\SFW.SYS\PROG C:[path] # -Add -G,-P to replace -L (localpath) # -Add -c,-C to cause creation of path (local or remote) if doesn't exist ############################################################################ ### use Net::FTP; %servers = ( # change for each 'secure' server (i.e., not anonymous login) 'filmworks' => 'my_username:my_password', ); $anon = 'keith@photoworks.com'; # email address $proxy = ''; i # change to your FTP proxy (if you have one) $default_server = 'filmworks'; # what server to use by default # ---- don't change these: $debug = 0; # default: debug OFF $ls = 0; # default: xfer, not ls $force = 0; # default: don't force case (uc vs lc) $tpath = 0; # default: target = 'file'; 1 => target = 'path/file' $create = 0; # default: deposit in cwd ; 1 => create path if !exist # 1) parse command line while ($arg = shift) { if ($arg eq '-p') {$put = 1;} elsif ($arg eq '-P') {$put = 1; $tpath = 1;} elsif ($arg eq '-g') {$put = 0;} elsif ($arg eq '-G') {$put = 0; $tpath = 1;} elsif ($arg eq '-s') {$stdout = 1;} elsif ($arg eq '-d') {$debug = 1;} elsif ($arg eq '-D') {$debug = 2;} elsif ($arg eq '-f') {$force = -1;} elsif ($arg eq '-F') {$force = 1;} elsif ($arg eq '-c') {$create = 1; $tpath = 1;} elsif ($arg eq '-C') {$create = 1; $tpath = 1;} elsif ($arg eq '-l') { $ls = 1; $arg = shift; goto process; # '-l' is assumed to be the last flag } elsif ($arg eq '-h' || $arg eq '-H') {goto help;} else { process: $source = $arg; $target = shift; process_file($source, $target); ++$processed; } } help: syntax() if !$processed; ############################################################################ ### sub syntax { print <= 0) {$s_srvr = substr $s_path, 0, $ix; $s_path = substr $s_path, $ix+1;} if ($debug == 2) {print " s_srvr =$s_srvr\n s_path =$s_path\n";} $ix = rindex $s_path, '/'; if ($debug == 2) {print " s_path =$s_path\n ix'/' =$ix\n";} if ($ix >= 0) {$s_file = substr $s_path, $ix+1; $s_path = substr $s_path, 0, $ix+1;} if ($debug == 2) {print " s_path =$s_path\n s_file =$s_file\n";} # split $target = t_srvr:t_path/t_file $t_path = $target; $ix = index $t_path, ':'; if ($debug == 2) {print " \$target=$target\n ix':' =$ix\n";} if ($ix >= 0) {$t_srvr = substr $t_path, 0, $ix; $t_path = substr $t_path, $ix+1;} if ($debug == 2) {print " t_srvr =$t_srvr\n t_path =$t_path\n";} $ix = rindex $t_path, '/'; if ($debug == 2) {print " t_path =$t_path\n ix'/' =$ix\n";} if ($ix >= 0) {$t_file = substr $t_path, $ix+1; $t_path = substr $t_path, 0, $ix+1;} if ($debug == 2) {print " t_path =$t_path\n t_file =$t_file\n";} if (!$t_file) {$t_file = $s_file;} # force target filename to upper/lower? if ($force) {$t_file = ($force < 0) ? lc $t_file : uc $t_file;} # Server vs Drive if ($s_srvr) { if ($s_srvr =~ /\b[A-Za-z]\b/) {$drive = $s_srvr . ':';} else {$server = $s_srvr ;} } if ($t_srvr) { if ($t_srvr =~ /\b[A-Za-z]\b/) {$drive = $t_srvr . ':';} else {if (!$server) {$server = $t_srvr ;} } } if ($debug == 2) {print " drive =$drive\n server =$server\n";} if ($server eq 'common') { print "Which system? "; $server = <>; chomp $server; } # is the server in our list? if (defined($servers{$server})) { ($user, $pwd) = split ":", $servers{$server}; } else { $server = $default_server; ($user, $pwd) = split ":", $servers{$server}; # $user = 'anonymous'; # $pwd = $anon; } if ($put) { if (!$t_path) {$t_path = $s_path;} $s_path = $drive . $s_path;} else {if ($tpath) { if (!$t_path) {$t_path = $drive . $s_path;} else {$t_path = $drive . $t_path;} } } # kludge to translate {s|t}_path to {l|r}path if ($put) {$lpath = $s_path; $rpath = $t_path; $lfile = $s_file; $rfile = $t_file;} else {$rpath = $s_path; $lpath = $t_path; $rfile = $s_file; $lfile = $t_file;} if ($debug) {print < 1; } ############################################################################ ### # now we can log on and grab the file $ftp = Net::FTP->new ( $server, Firewall => $proxy, Debug => $debug, ) or die "cannot create ftp object: $!\n"; $ftp->login($user, $pwd); $ftp->binary; if ($ls) { if ($rpath) {$ftp->cwd($rpath);} $r_ls = $ftp->ls(); print join "\n", sort @$r_ls; } else { if ($debug == 2) {print "Inside ftp: create=$create, put=$put, lpath=$lpath\n";} if ($create) {if ($put) {if ($rpath) {$ftp->mkdir($rpath,1);} } else {if ($lpath) { MkDir($lpath) ;} } } if ($rpath) {$ftp->cwd($rpath);} if ($lpath) { chdir $lpath ;} if ($stdout) {if ($put) {$ftp->put("-", $t_file) ;} else {$ftp->get($s_file, "-") ;} } else {if ($put) {$ftp->put($s_file,$t_file);} else {$ftp->get($s_file,$t_file);} } } $ftp->quit; } # use like this: MkDir($path); sub MkDir { my $path = shift; my $saved; ($saved, $path) = split ":", $path; # so 1st element != "/C:" if ($saved) {$saved .= ":";} # print "Inside MkDir: drive='$saved', path=$path\n" if $debug; foreach (split ("\\/", $path)) { # print "Making: \'$saved/$_\'\n" if $debug; mkdir "$saved/$_", 0777; $saved .= '/'.$_; } } -- Keith W. (Aaron) Roberts (206) 281-1390 x761 Vmail: x475 PhotoWorks, Inc. [formerly Seattle FilmWorks, Inc.] keith@photoworks.com Home: kaaron@worldnet.att.net -------------- next part -------------- An HTML attachment was scrubbed... URL: http://mail.pm.org/archives/spug-list/attachments/20000606/1c75bea0/attachment.htm From starfire at zipcon.net Tue Jun 6 23:09:28 2000 From: starfire at zipcon.net (Richard Anderson) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: How do I fix myself up? [Desperately seeking HELP] References: Message-ID: <030101bfd036$30255e70$3388ddd1@adcom133> This answer is probably not what you want to hear, but anyway ... Your comment "it ain't elegant, but it works on the old system" is telling. You could probably hack this ragged-looking script to work on your new system, but I'd wouldn't be surprised if you have more problems the next time you move it to a new system. A better approach to portability would be to write a Korn or Bourne shell script that processes the input parameters, saves the contents of the current .netrc file (if it exists), writes a new .netrc file containing a macro to do the desired task, fires off the ftp command and then restores the old .netrc file. An example of this is attached. Richard.Anderson@unixscripts.com www.zipcon.net/~starfire/home (personal) www.unixscripts.com (corporate) ----- Original Message ----- From: "Keith Aaron" To: Sent: Tuesday, June 06, 2000 8:08 AM Subject: RE: SPUG: How do I fix myself up? [Desperately seeking HELP] > Now I get a different error when I try to execute the Perl script: > > C:\WINNT\system32\cmd.exe /c ftpget.pl -p -C -d > "E:/source/filmworks/SFW.SYS/SFW.BP/PD.JOBLOGGER" "filmworks:" > DEBUG OUTPUT: > User: keitha > Server: filmworks > Rpath: /source/filmworks/SFW.SYS/SFW.BP/PD.JOBLOGGER > Lpath: E:/source/filmworks/SFW.SYS/SFW.BP/PD.JOBLOGGER > Create: 1 > > <<...>> > > Net::FTP=GLOB(0x8d6f234)<<< 200 TYPE I ok. > Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks/SFW.SYS/SFW.BP/ > Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks/SFW.SYS/SFW.BP/ Error 17: > File > exists > Net::FTP=GLOB(0x8d6f234)>>> MKD /source > Net::FTP=GLOB(0x8d6f234)<<< 550 /source Error 17: File exists > Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks > Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks Error 17: File exists > Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks/SFW.SYS > Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks/SFW.SYS Error 17: File > exists > Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks/SFW.SYS/SFW.BP > Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks/SFW.SYS/SFW.BP Error 17: > File > exists > Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks/SFW.SYS/SFW.BP/ > Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks/SFW.SYS/SFW.BP/ Error 17: > File > exists > Net::FTP=GLOB(0x8d6f234)>>> PWD > Net::FTP=GLOB(0x8d6f234)<<< 257 "/home/keitha" is current directory. > Can't locate object method "cd" via package "Net::FTP" at > C:/Perl/site/lib/Net/F > TP.pm line 464. > Net::FTP=GLOB(0x8d6f234)>>> QUIT > Net::FTP=GLOB(0x8d6f234)<<< 221 Goodbye. > 255 returned > Hit any key to close this window... > > It must be failing on the line: > if ($rpath) {$ftp->cwd($rpath);} > > ... but I don't see why. Are there more packages I need to install? And > how do I find out what I need to install when something is missing? > > > -----Original Message----- > From: Keith Aaron > Sent: Thursday, June 01, 2000 6:39 PM > To: 'AHands@unforgettable.com' > Subject: RE: SPUG: How do I fix myself up? [Desperately seeking HELP] > > Here's the script (it ain't elegant, but it works on the old system): > > #!/usr/bin/perl > # simple ftp client for use from vim or the command-line! > # type ftpget without arguments to find > # > # The file will be got/put from/to the path provided, but will be stored > # locally in the current directory as the base file name. > # > # The server will be looked up in the table %servers, which will define the > # logon for that server (otherwise, be anonymous) > # > # written by: Ron Aaron > # last update: 01/24/98 14:54:49 > # > ############################################################################ > ### > # 09-24-99 Keith W. Aaron > # -Allow different source and target; distinguish between drive and > server: > # ftpget -p E:\src\fw\SFW.SYS\PROG server:[path] > # ftpget -G server:\src\fw\SFW.SYS\PROG C:[path] > # -Add -G,-P to replace -L (localpath) > # -Add -c,-C to cause creation of path (local or remote) if doesn't exist > ############################################################################ > ### > > use Net::FTP; > > %servers = ( # change for each 'secure' server (i.e., not anonymous login) > 'filmworks' => 'my_username:my_password', > ); > $anon = 'keith@photoworks.com'; # email address > $proxy = ''; i # change to your FTP proxy > (if you have one) > $default_server = 'filmworks'; # what server to use by default > > # ---- don't change these: > $debug = 0; # default: debug OFF > $ls = 0; # default: xfer, not ls > $force = 0; # default: don't force case (uc vs lc) > $tpath = 0; # default: target = 'file'; 1 => target = 'path/file' > $create = 0; # default: deposit in cwd ; 1 => create path if !exist > > # 1) parse command line > while ($arg = shift) > { > if ($arg eq '-p') {$put = 1;} > elsif ($arg eq '-P') {$put = 1; $tpath = 1;} > elsif ($arg eq '-g') {$put = 0;} > elsif ($arg eq '-G') {$put = 0; $tpath = 1;} > elsif ($arg eq '-s') {$stdout = 1;} > elsif ($arg eq '-d') {$debug = 1;} > elsif ($arg eq '-D') {$debug = 2;} > elsif ($arg eq '-f') {$force = -1;} > elsif ($arg eq '-F') {$force = 1;} > elsif ($arg eq '-c') {$create = 1; $tpath = 1;} > elsif ($arg eq '-C') {$create = 1; $tpath = 1;} > elsif ($arg eq '-l') > { > $ls = 1; > $arg = shift; > goto process; # '-l' is assumed to be the last flag > } > elsif ($arg eq '-h' || $arg eq '-H') {goto help;} > else > { > process: > $source = $arg; > $target = shift; > process_file($source, $target); > ++$processed; > } > } > help: > syntax() if !$processed; > > ############################################################################ > ### > > sub syntax > { > print < > Usage: > > ftpget -{g|G} [flags] [server:]source_file [drive:][target_file] > ftpget -{p|P} [flags] [drive:]source_file [server:][target_file] > ftpget -l [flags] [server:][directory] > > -g get file, write to lcd > -G get file, write to target_path (default=source_path), if it exists > -p put file, write to cwd > -P put file, write to target_path (default=source_path), if it exists > -l get sorted dir listing (ls) > > flags: > -c create target_path if it doesn't exist (forces -G|-P) > -C create target_path if it doesn't exist (forces -G|-P) > -d print debug info while executing > -D print debug info only; don't do transfer > -f force target filename to lowercase > -F force target filename to uppercase > -s get/put to/from stdout/stdin > EOF > } > > sub process_file > { > (my $source = shift); (my $target = shift); > (my $s_srvr, $t_srvr, $s_path, $t_path, $s_file, $t_file); > (my $server, $drive, $ix, $lpath, $lfile, $rpath, $rfile); > > # fix backslashes in DOS pathnames > $source =~ s/\\/\//g; > $target =~ s/\\/\//g; > > # split $source = s_srvr:s_path/s_file > $s_path = $source; > $ix = index $s_path, ':'; > if ($debug == 2) {print " \$source=$source\n ix':' =$ix\n";} > if ($ix >= 0) {$s_srvr = substr $s_path, 0, $ix; > $s_path = substr $s_path, $ix+1;} > if ($debug == 2) {print " s_srvr =$s_srvr\n s_path =$s_path\n";} > $ix = rindex $s_path, '/'; > if ($debug == 2) {print " s_path =$s_path\n ix'/' =$ix\n";} > if ($ix >= 0) {$s_file = substr $s_path, $ix+1; > $s_path = substr $s_path, 0, $ix+1;} > if ($debug == 2) {print " s_path =$s_path\n s_file =$s_file\n";} > > # split $target = t_srvr:t_path/t_file > $t_path = $target; > $ix = index $t_path, ':'; > if ($debug == 2) {print " \$target=$target\n ix':' =$ix\n";} > if ($ix >= 0) {$t_srvr = substr $t_path, 0, $ix; > $t_path = substr $t_path, $ix+1;} > if ($debug == 2) {print " t_srvr =$t_srvr\n t_path =$t_path\n";} > $ix = rindex $t_path, '/'; > if ($debug == 2) {print " t_path =$t_path\n ix'/' =$ix\n";} > if ($ix >= 0) {$t_file = substr $t_path, $ix+1; > $t_path = substr $t_path, 0, $ix+1;} > if ($debug == 2) {print " t_path =$t_path\n t_file =$t_file\n";} > if (!$t_file) {$t_file = $s_file;} > > # force target filename to upper/lower? > if ($force) {$t_file = ($force < 0) ? lc $t_file : uc $t_file;} > > # Server vs Drive > if ($s_srvr) { > if ($s_srvr =~ /\b[A-Za-z]\b/) {$drive = $s_srvr . ':';} > else {$server = $s_srvr ;} } > if ($t_srvr) { > if ($t_srvr =~ /\b[A-Za-z]\b/) {$drive = $t_srvr . ':';} > else {if (!$server) {$server = $t_srvr ;} } } > if ($debug == 2) {print " drive =$drive\n server =$server\n";} > > if ($server eq 'common') { > print "Which system? "; $server = <>; chomp $server; } > > # is the server in our list? > if (defined($servers{$server})) > { > ($user, $pwd) = split ":", $servers{$server}; > } > else > { > $server = $default_server; > ($user, $pwd) = split ":", $servers{$server}; > # $user = 'anonymous'; > # $pwd = $anon; > } > > if ($put) { > if (!$t_path) {$t_path = $s_path;} > $s_path = $drive . $s_path;} > else {if ($tpath) { > if (!$t_path) {$t_path = $drive . $s_path;} > else {$t_path = $drive . $t_path;} } } > > # kludge to translate {s|t}_path to {l|r}path > if ($put) {$lpath = $s_path; $rpath = $t_path; > $lfile = $s_file; $rfile = $t_file;} > else {$rpath = $s_path; $lpath = $t_path; > $rfile = $s_file; $lfile = $t_file;} > > if ($debug) {print < DEBUG OUTPUT: > User: $user > Server: $server > Rpath: $rpath$rfile > Lpath: $lpath$lfile > Create: $create > > EOF > exit if $debug > 1; > } > > ############################################################################ > ### > > # now we can log on and grab the file > $ftp = Net::FTP->new ( > $server, > Firewall => $proxy, > Debug => $debug, > ) > or die "cannot create ftp object: $!\n"; > > $ftp->login($user, $pwd); > $ftp->binary; > if ($ls) > { > if ($rpath) {$ftp->cwd($rpath);} > $r_ls = $ftp->ls(); > print join "\n", sort @$r_ls; > } > else > { > if ($debug == 2) {print "Inside ftp: create=$create, put=$put, > lpath=$lpath\n";} > if ($create) {if ($put) {if ($rpath) {$ftp->mkdir($rpath,1);} } > else {if ($lpath) { MkDir($lpath) ;} } } > if ($rpath) {$ftp->cwd($rpath);} > if ($lpath) { chdir $lpath ;} > if ($stdout) {if ($put) {$ftp->put("-", $t_file) ;} > else {$ftp->get($s_file, "-") ;} } > else {if ($put) {$ftp->put($s_file,$t_file);} > else {$ftp->get($s_file,$t_file);} } > } > $ftp->quit; > } > > # use like this: MkDir($path); > sub MkDir { > my $path = shift; > my $saved; > > ($saved, $path) = split ":", $path; # so 1st element != "/C:" > if ($saved) {$saved .= ":";} > # print "Inside MkDir: drive='$saved', path=$path\n" if $debug; > > foreach (split ("\\/", $path)) { > # print "Making: \'$saved/$_\'\n" if $debug; > mkdir "$saved/$_", 0777; > $saved .= '/'.$_; > } > } > > -- > Keith W. (Aaron) Roberts (206) 281-1390 x761 Vmail: > x475 > PhotoWorks, Inc. [formerly Seattle FilmWorks, Inc.] > keith@photoworks.com Home: kaaron@worldnet.att.net > -------------- next part -------------- A non-text attachment was scrubbed... Name: aftp Type: application/octet-stream Size: 2415 bytes Desc: not available Url : http://mail.pm.org/archives/spug-list/attachments/20000606/243c9cf5/aftp.obj From jdevlin at stadiumdistrict.com Wed Jun 7 02:56:15 2000 From: jdevlin at stadiumdistrict.com (Joe Devlin) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: How do I fix myself up? [Desperately seeking HELP] Message-ID: <01BFD01B.31B98740@tac-lx100-ip37.nwnexus.net> Keith, My first conclusion is to trust my code and not search to the extreme for an answer. If it was just working then it is probably a simple bug and easily remedied once the unkown is known:) It looks like this code is set up to distinguish between running under linux or unix and under windows. I assume that from your comment about the fail line of code and some code that is near it {$ftp->mkdir($rpath,1);} } > else {if ($lpath) { MkDir($lpath) ;} } } Do you see that $ftp->mkdir is from module Net:FTP (Camel book page 441) and that MkDir($lpath) is from module Win32::Internet (Camel book page 571) >From the way you are begining your execution at the C:\ prompt it appears that you are using a windows based op. sys. and need to add: use Win32::Internet; in the code. = = = = Also note that the $target scalar receives a shifted argument depending on a long string of else ifs, and $target eventually may affect the fail line of code that you mentioned. What this means is that what you put on your command line is critical to what gets put into $target. = = = = Did you switch operating systems? Joe Devlin Devlin Technical Consulting ----- Original Message ----- From: "Keith Aaron" To: Sent: Tuesday, June 06, 2000 8:08 AM Subject: RE: SPUG: How do I fix myself up? [Desperately seeking HELP] > Now I get a different error when I try to execute the Perl script: > > C:\WINNT\system32\cmd.exe /c ftpget.pl -p -C -d > "E:/source/filmworks/SFW.SYS/SFW.BP/PD.JOBLOGGER" "filmworks:" > DEBUG OUTPUT: > User: keitha > Server: filmworks > Rpath: /source/filmworks/SFW.SYS/SFW.BP/PD.JOBLOGGER > Lpath: E:/source/filmworks/SFW.SYS/SFW.BP/PD.JOBLOGGER > Create: 1 > > <<...>> > > Net::FTP=GLOB(0x8d6f234)<<< 200 TYPE I ok. > Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks/SFW.SYS/SFW.BP/ > Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks/SFW.SYS/SFW.BP/ Error 17: > File > exists > Net::FTP=GLOB(0x8d6f234)>>> MKD /source > Net::FTP=GLOB(0x8d6f234)<<< 550 /source Error 17: File exists > Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks > Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks Error 17: File exists > Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks/SFW.SYS > Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks/SFW.SYS Error 17: File > exists > Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks/SFW.SYS/SFW.BP > Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks/SFW.SYS/SFW.BP Error 17: > File > exists > Net::FTP=GLOB(0x8d6f234)>>> MKD /source/filmworks/SFW.SYS/SFW.BP/ > Net::FTP=GLOB(0x8d6f234)<<< 550 /source/filmworks/SFW.SYS/SFW.BP/ Error 17: > File > exists > Net::FTP=GLOB(0x8d6f234)>>> PWD > Net::FTP=GLOB(0x8d6f234)<<< 257 "/home/keitha" is current directory. > Can't locate object method "cd" via package "Net::FTP" at > C:/Perl/site/lib/Net/F > TP.pm line 464. > Net::FTP=GLOB(0x8d6f234)>>> QUIT > Net::FTP=GLOB(0x8d6f234)<<< 221 Goodbye. > 255 returned > Hit any key to close this window... > > It must be failing on the line: > if ($rpath) {$ftp->cwd($rpath);} > > ... but I don't see why. Are there more packages I need to install? And > how do I find out what I need to install when something is missing? > > > -----Original Message----- > From: Keith Aaron > Sent: Thursday, June 01, 2000 6:39 PM > To: 'AHands@unforgettable.com' > Subject: RE: SPUG: How do I fix myself up? [Desperately seeking HELP] > > Here's the script (it ain't elegant, but it works on the old system): > > #!/usr/bin/perl > # simple ftp client for use from vim or the command-line! > # type ftpget without arguments to find > # > # The file will be got/put from/to the path provided, but will be stored > # locally in the current directory as the base file name. > # > # The server will be looked up in the table %servers, which will define the > # logon for that server (otherwise, be anonymous) > # > # written by: Ron Aaron > # last update: 01/24/98 14:54:49 > # > ############################################################################ > ### > # 09-24-99 Keith W. Aaron > # -Allow different source and target; distinguish between drive and > server: > # ftpget -p E:\src\fw\SFW.SYS\PROG server:[path] > # ftpget -G server:\src\fw\SFW.SYS\PROG C:[path] > # -Add -G,-P to replace -L (localpath) > # -Add -c,-C to cause creation of path (local or remote) if doesn't exist > ############################################################################ > ### > > use Net::FTP; > > %servers = ( # change for each 'secure' server (i.e., not anonymous login) > 'filmworks' => 'my_username:my_password', > ); > $anon = 'keith@photoworks.com'; # email address > $proxy = ''; i # change to your FTP proxy > (if you have one) > $default_server = 'filmworks'; # what server to use by default > > # ---- don't change these: > $debug = 0; # default: debug OFF > $ls = 0; # default: xfer, not ls > $force = 0; # default: don't force case (uc vs lc) > $tpath = 0; # default: target = 'file'; 1 => target = 'path/file' > $create = 0; # default: deposit in cwd ; 1 => create path if !exist > > # 1) parse command line > while ($arg = shift) > { > if ($arg eq '-p') {$put = 1;} > elsif ($arg eq '-P') {$put = 1; $tpath = 1;} > elsif ($arg eq '-g') {$put = 0;} > elsif ($arg eq '-G') {$put = 0; $tpath = 1;} > elsif ($arg eq '-s') {$stdout = 1;} > elsif ($arg eq '-d') {$debug = 1;} > elsif ($arg eq '-D') {$debug = 2;} > elsif ($arg eq '-f') {$force = -1;} > elsif ($arg eq '-F') {$force = 1;} > elsif ($arg eq '-c') {$create = 1; $tpath = 1;} > elsif ($arg eq '-C') {$create = 1; $tpath = 1;} > elsif ($arg eq '-l') > { > $ls = 1; > $arg = shift; > goto process; # '-l' is assumed to be the last flag > } > elsif ($arg eq '-h' || $arg eq '-H') {goto help;} > else > { > process: > $source = $arg; > $target = shift; > process_file($source, $target); > ++$processed; > } > } > help: > syntax() if !$processed; > > ############################################################################ > ### > > sub syntax > { > print < > Usage: > > ftpget -{g|G} [flags] [server:]source_file [drive:][target_file] > ftpget -{p|P} [flags] [drive:]source_file [server:][target_file] > ftpget -l [flags] [server:][directory] > > -g get file, write to lcd > -G get file, write to target_path (default=source_path), if it exists > -p put file, write to cwd > -P put file, write to target_path (default=source_path), if it exists > -l get sorted dir listing (ls) > > flags: > -c create target_path if it doesn't exist (forces -G|-P) > -C create target_path if it doesn't exist (forces -G|-P) > -d print debug info while executing > -D print debug info only; don't do transfer > -f force target filename to lowercase > -F force target filename to uppercase > -s get/put to/from stdout/stdin > EOF > } > > sub process_file > { > (my $source = shift); (my $target = shift); > (my $s_srvr, $t_srvr, $s_path, $t_path, $s_file, $t_file); > (my $server, $drive, $ix, $lpath, $lfile, $rpath, $rfile); > > # fix backslashes in DOS pathnames > $source =~ s/\\/\//g; > $target =~ s/\\/\//g; > > # split $source = s_srvr:s_path/s_file > $s_path = $source; > $ix = index $s_path, ':'; > if ($debug == 2) {print " \$source=$source\n ix':' =$ix\n";} > if ($ix >= 0) {$s_srvr = substr $s_path, 0, $ix; > $s_path = substr $s_path, $ix+1;} > if ($debug == 2) {print " s_srvr =$s_srvr\n s_path =$s_path\n";} > $ix = rindex $s_path, '/'; > if ($debug == 2) {print " s_path =$s_path\n ix'/' =$ix\n";} > if ($ix >= 0) {$s_file = substr $s_path, $ix+1; > $s_path = substr $s_path, 0, $ix+1;} > if ($debug == 2) {print " s_path =$s_path\n s_file =$s_file\n";} > > # split $target = t_srvr:t_path/t_file > $t_path = $target; > $ix = index $t_path, ':'; > if ($debug == 2) {print " \$target=$target\n ix':' =$ix\n";} > if ($ix >= 0) {$t_srvr = substr $t_path, 0, $ix; > $t_path = substr $t_path, $ix+1;} > if ($debug == 2) {print " t_srvr =$t_srvr\n t_path =$t_path\n";} > $ix = rindex $t_path, '/'; > if ($debug == 2) {print " t_path =$t_path\n ix'/' =$ix\n";} > if ($ix >= 0) {$t_file = substr $t_path, $ix+1; > $t_path = substr $t_path, 0, $ix+1;} > if ($debug == 2) {print " t_path =$t_path\n t_file =$t_file\n";} > if (!$t_file) {$t_file = $s_file;} > > # force target filename to upper/lower? > if ($force) {$t_file = ($force < 0) ? lc $t_file : uc $t_file;} > > # Server vs Drive > if ($s_srvr) { > if ($s_srvr =~ /\b[A-Za-z]\b/) {$drive = $s_srvr . ':';} > else {$server = $s_srvr ;} } > if ($t_srvr) { > if ($t_srvr =~ /\b[A-Za-z]\b/) {$drive = $t_srvr . ':';} > else {if (!$server) {$server = $t_srvr ;} } } > if ($debug == 2) {print " drive =$drive\n server =$server\n";} > > if ($server eq 'common') { > print "Which system? "; $server = <>; chomp $server; } > > # is the server in our list? > if (defined($servers{$server})) > { > ($user, $pwd) = split ":", $servers{$server}; > } > else > { > $server = $default_server; > ($user, $pwd) = split ":", $servers{$server}; > # $user = 'anonymous'; > # $pwd = $anon; > } > > if ($put) { > if (!$t_path) {$t_path = $s_path;} > $s_path = $drive . $s_path;} > else {if ($tpath) { > if (!$t_path) {$t_path = $drive . $s_path;} > else {$t_path = $drive . $t_path;} } } > > # kludge to translate {s|t}_path to {l|r}path > if ($put) {$lpath = $s_path; $rpath = $t_path; > $lfile = $s_file; $rfile = $t_file;} > else {$rpath = $s_path; $lpath = $t_path; > $rfile = $s_file; $lfile = $t_file;} > > if ($debug) {print < DEBUG OUTPUT: > User: $user > Server: $server > Rpath: $rpath$rfile > Lpath: $lpath$lfile > Create: $create > > EOF > exit if $debug > 1; > } > > ############################################################################ > ### > > # now we can log on and grab the file > $ftp = Net::FTP->new ( > $server, > Firewall => $proxy, > Debug => $debug, > ) > or die "cannot create ftp object: $!\n"; > > $ftp->login($user, $pwd); > $ftp->binary; > if ($ls) > { > if ($rpath) {$ftp->cwd($rpath);} > $r_ls = $ftp->ls(); > print join "\n", sort @$r_ls; > } > else > { > if ($debug == 2) {print "Inside ftp: create=$create, put=$put, > lpath=$lpath\n";} > if ($create) {if ($put) {if ($rpath) {$ftp->mkdir($rpath,1);} } > else {if ($lpath) { MkDir($lpath) ;} } } > if ($rpath) {$ftp->cwd($rpath);} > if ($lpath) { chdir $lpath ;} > if ($stdout) {if ($put) {$ftp->put("-", $t_file) ;} > else {$ftp->get($s_file, "-") ;} } > else {if ($put) {$ftp->put($s_file,$t_file);} > else {$ftp->get($s_file,$t_file);} } > } > $ftp->quit; > } > > # use like this: MkDir($path); > sub MkDir { > my $path = shift; > my $saved; > > ($saved, $path) = split ":", $path; # so 1st element != "/C:" > if ($saved) {$saved .= ":";} > # print "Inside MkDir: drive='$saved', path=$path\n" if $debug; > > foreach (split ("\\/", $path)) { > # print "Making: \'$saved/$_\'\n" if $debug; > mkdir "$saved/$_", 0777; > $saved .= '/'.$_; > } > } > > -- > Keith W. (Aaron) Roberts (206) 281-1390 x761 Vmail: > x475 > PhotoWorks, Inc. [formerly Seattle FilmWorks, Inc.] > keith@photoworks.com Home: kaaron@worldnet.att.net > <> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From rerwin at ricochet.net Wed Jun 7 17:23:27 2000 From: rerwin at ricochet.net (Ryan Erwin) Date: Wed Aug 4 00:07:22 2004 Subject: ESPUG::June::Meeting && Conway... Message-ID: <001301bfd0cf$012ff0f0$509e0118@cx575873b> Greetings all ESPUGers- Our regularly scheduled June meeting falls on Wednesday the 28th. Just 1 week later on Thursday July 6th at 7:00 pm Damian Conway will be presenting at ESPUG. Because these meetings fall so closely together I'm invoking my special powers as emperor and declaring that the Conway visit is our June meeting! How can you do such a thing you ask? Well, that's why I'm the emperor... my job is to figure these things out ;) Please send any complaints about the calendar correction to /dev/null... ;-} Your Humble ESPUG Emperor Ryan Erwin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From chris at enthusiasm.com Fri Jun 9 14:15:51 2000 From: chris at enthusiasm.com (Christopher Cavnor) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: passing in a reg exp as a string, then interpolating Message-ID: <39414266.64C53A3D@enthusiasm.com> does anyone know how to pass a regular expression into a script (in my case, from an HTML form) and then evaluate the expression? I am passing in a reg exp (like "/^hello/ ")as a string and grabbing it (my $regexp = /^hello/ ), and then trying to interpolate: push @results, $k if do{ $k =~ @{[ $regexp ]}; Doesn't seem to be working. Any tricks for doing this? Chris - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From asherr at cs.unm.edu Fri Jun 9 15:16:26 2000 From: asherr at cs.unm.edu (Aryeh "Cody" Sherr) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: passing in a reg exp as a string, then interpolating In-Reply-To: <39414266.64C53A3D@enthusiasm.com> Message-ID: >I am passing in a reg exp (like "/^hello/ ")as a string and grabbing it >(my $regexp = /^hello/ ), and then trying to interpolate: try this instead: my $regexp = '^hello$'; push (@results, $k) if /$regexp/; cody - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From ced at carios2.ca.boeing.com Fri Jun 9 15:13:33 2000 From: ced at carios2.ca.boeing.com (ced@carios2.ca.boeing.com) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: passing in a reg exp as a string, then interpolating Message-ID: <200006092013.NAA12871@carios2.ca.boeing.com> > does anyone know how to pass a regular expression into a script (in my > case, from an HTML form) and then evaluate the expression? > I am passing in a reg exp (like "/^hello/ ")as a string and grabbing it > (my $regexp = /^hello/ ), and then trying to interpolate: > push @results, $k if do{ $k =~ @{[ $regexp ]}; > Doesn't seem to be working. Any tricks for doing this? (The @{[]} is a mistake and is a severe security problem if you're pulling the regex in from the command line. Check the CGI books or faqs for details about laundering tainted data) The easiest approach would be to pass in the regex without the delimiters, e.g., just '^hello', instead of /^hello/. Just as a guess you might want something like: use CGI qw(:standard); use CGI::Carp qw/fatalsToBrowser/; ... # launder the user input for dangerous characters, e.g., my $regex = param('regex'); $regex =~ tr/'"\t\n\r\/<>|;//d; # see if there's a match my $match; my $k = "foo bar...."; eval { $match = $k =~ /$regex/ }; if ( $@ ) { die "regular expression error: $@"; } else { push @results, $k if $match; } Rgds, -- Charles DeRykus - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From largest at largest.org Fri Jun 9 15:18:35 2000 From: largest at largest.org (Joel) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: passing in a reg exp as a string, then interpolating In-Reply-To: <39414266.64C53A3D@enthusiasm.com> Message-ID: On Fri, 9 Jun 2000, Christopher Cavnor wrote: > does anyone know how to pass a regular expression into a script (in my > case, from an HTML form) and then evaluate the expression? > > I am passing in a reg exp (like "/^hello/ ")as a string and grabbing > it (my $regexp = /^hello/ ), and then trying to interpolate: > > push @results, $k if do{ $k =~ @{[ $regexp ]}; > > Doesn't seem to be working. Any tricks for doing this? You could use 'eval': #!/usr/local/bin/perl use strict; my @results; my $regex = '/^hello/'; my $test = 'hello world'; push @results, $test if ( $test =~ eval $regex ); print "@results\n"; # prints "hello world\n"; __END__ Joel - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From dean at ero.com Fri Jun 9 16:23:08 2000 From: dean at ero.com (Dean Hudson) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: passing in a reg exp as a string, then interpolating In-Reply-To: ; from largest@largest.org on Fri, Jun 09, 2000 at 04:18:35PM -0400 References: <39414266.64C53A3D@enthusiasm.com> Message-ID: <20000609142307.D17525@ero.com> This seems pretty dangerous in general; in particular without taint checking. Depending on which version of perl you're running, you need to be careful to watch out for things like: (?{ evil code }) That being said, you can also play around with qr//, which would allow you to pass options to your regex. (But I don't think you can pass the opts in a valiable...) See perlop and perlre, and be careful with what you do with the user input. dean. On Fri, Jun 09, 2000 at 04:18:35PM -0400, Joel wrote: > On Fri, 9 Jun 2000, Christopher Cavnor wrote: > > > does anyone know how to pass a regular expression into a script (in my > > case, from an HTML form) and then evaluate the expression? > > > > I am passing in a reg exp (like "/^hello/ ")as a string and grabbing > > it (my $regexp = /^hello/ ), and then trying to interpolate: > > > > push @results, $k if do{ $k =~ @{[ $regexp ]}; > > > > Doesn't seem to be working. Any tricks for doing this? > > > You could use 'eval': > > #!/usr/local/bin/perl > > use strict; > > my @results; > my $regex = '/^hello/'; > my $test = 'hello world'; > > push @results, $test if ( $test =~ eval $regex ); > > print "@results\n"; # prints "hello world\n"; > > __END__ > > > Joel > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > -- my $email = qr{ dean(h)?@(?(1)verio\.net # @ work if h | ero\.com) }x; # other - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From elephant at cnw.com Fri Jun 9 16:32:51 2000 From: elephant at cnw.com (Michael Dahlquist) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Way off subject: XML as HTML replacement? Message-ID: Okay, this is way off subject - ignore it if you see fit. Does anyone in the known world use XML as a replacement for HTML? If there were a fast server-side XML-to-HTML parser, would anyone be excited, since they could now design stuff using XML? Is XML useful at all as a web design tool? I've been desperately seeking an account of the current acceptance of XML as a tool, especially as a web design tool, & I can't find much. Thank you. I apologize in advance. Michael - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From largest at largest.org Fri Jun 9 16:54:38 2000 From: largest at largest.org (Joel) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: passing in a reg exp as a string, then interpolating In-Reply-To: <20000609142307.D17525@ero.com> Message-ID: On Fri, 9 Jun 2000, Dean Hudson wrote: > This seems pretty dangerous in general; in particular without taint > checking. Depending on which version of perl you're running, you need > to be careful to watch out for things like: > > (?{ evil code }) > > That being said, you can also play around with qr//, which would allow > you to pass options to your regex. (But I don't think you can pass the > opts in a valiable...) > > See perlop and perlre, and be careful with what you do with the user > input. Great point! I should have paid more attention to Christopher saying he was using the regex from an HTML form. Definitely be very careful with this. But even more troubling, my code doesn't work! that was, um, just a test to see if you were paying attention.... :-) I think this would fix my solution: #!/usr/local/bin/perl use strict; my @results; my $regex = '/^hello/'; my $test = 'hello world'; my $expression = '$test =~ '.$regex; push @results, $test if ( eval $expression ); print "@results\n"; __END__ Joel > On Fri, Jun 09, 2000 at 04:18:35PM -0400, Joel wrote: > > On Fri, 9 Jun 2000, Christopher Cavnor wrote: > > > > > does anyone know how to pass a regular expression into a script (in my > > > case, from an HTML form) and then evaluate the expression? > > > > > > I am passing in a reg exp (like "/^hello/ ")as a string and grabbing > > > it (my $regexp = /^hello/ ), and then trying to interpolate: > > > > > > push @results, $k if do{ $k =~ @{[ $regexp ]}; > > > > > > Doesn't seem to be working. Any tricks for doing this? > > > > > > You could use 'eval': > > > > #!/usr/local/bin/perl > > > > use strict; > > > > my @results; > > my $regex = '/^hello/'; > > my $test = 'hello world'; > > > > push @results, $test if ( $test =~ eval $regex ); > > > > print "@results\n"; # prints "hello world\n"; > > > > __END__ > > > > > > Joel > > > > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > > > > > -- > my $email = qr{ dean(h)?@(?(1)verio\.net # @ work if h > | ero\.com) }x; # other > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From chris at enthusiasm.com Fri Jun 9 16:58:42 2000 From: chris at enthusiasm.com (Christopher Cavnor) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: passing in a reg exp as a string, then interpolating References: Message-ID: <39416892.CAAE9796@enthusiasm.com> Thanks all; Passing in the reg exp sans the delimiter works the best, also limits the degree of taint checking (although the script is secure and for personal use - but you never know). Chris Joel wrote: > On Fri, 9 Jun 2000, Christopher Cavnor wrote: > > > does anyone know how to pass a regular expression into a script (in my > > case, from an HTML form) and then evaluate the expression? > > > > I am passing in a reg exp (like "/^hello/ ")as a string and grabbing > > it (my $regexp = /^hello/ ), and then trying to interpolate: > > > > push @results, $k if do{ $k =~ @{[ $regexp ]}; > > > > Doesn't seem to be working. Any tricks for doing this? > > You could use 'eval': > > #!/usr/local/bin/perl > > use strict; > > my @results; > my $regex = '/^hello/'; > my $test = 'hello world'; > > push @results, $test if ( $test =~ eval $regex ); > > print "@results\n"; # prints "hello world\n"; > > __END__ > > Joel > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From jdevlin at stadiumdistrict.com Mon Jun 12 17:07:00 2000 From: jdevlin at stadiumdistrict.com (Joe Devlin) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Way off subject: XML as HTML replacement? Message-ID: <01BFD47F.E70A24C0@tac-lx100-ip34.nwnexus.net> Hello Michael, I had a similar question around the same time as you, because I've heard so much hype about it being the thing to be doing. I went to Borders in Seattle and scanned through all the books on XML and found that it appears that XML is only read by Internet Explorer 5. The graphic development tool Dreamweaver on a simple test has the option of reading an XML file but it doesn't seem to open up the file the same as HTML. If I were to hand code XML for some of my Perl scripts, then the graphics designers wouldn't be able to use it with dreamweaver. So we have decided to hold off for a while... Could be a case of too much ignorance on my part. But the process seemed a little bleeding edge and we have work to do. Joe ---------- From: Michael Dahlquist[SMTP:elephant@cnw.com] Sent: Friday, June 09, 2000 7:32 AM To: spug-list@pm.org Subject: SPUG: Way off subject: XML as HTML replacement? Okay, this is way off subject - ignore it if you see fit. Does anyone in the known world use XML as a replacement for HTML? If there were a fast server-side XML-to-HTML parser, would anyone be excited, since they could now design stuff using XML? Is XML useful at all as a web design tool? I've been desperately seeking an account of the current acceptance of XML as a tool, especially as a web design tool, & I can't find much. Thank you. I apologize in advance. Michael - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From ricardo_cardona at hotmail.com Mon Jun 12 17:44:53 2000 From: ricardo_cardona at hotmail.com (Ricardo Cardona) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Perl/Tk demos? Message-ID: <20000612224453.65206.qmail@hotmail.com> Someone on the SPUG list responded to the below June 2 message with a URL link to a source that had online TCL/TK demos. I meant to save that E-mail because I knew I would need that URL it in the near future. Well, I can kick myself in the head for having inadvertently erased it!! Will someone be so kind as to search there email archive for the response E-mail that has that URL link and forward it to me. I’m in a crunch and need that URL ASAP. ( like right now!) Thank you all in advance. >From: "Rush Family" >To: >Subject: SPUG: Perl/Tk demos? >Date: Thu, 1 Jun 2000 22:19:41 -0700 > > >Hi everyone -- I am new to Perl and to this Perl discussion group. > >I run the ActiveState release of Perl for Win32, build 522, and their dev >kit version 1.2.4. > >Where can I find an exhaustive demo of Tk on the Internet or on a CD-ROM? >One that shows all the different kinds of widgets and the code for each. >The >Tk module includes instructions for writing your own widget demos, but I am >hoping there is one huge monolithic TkDemo.pl already written and just >waiting for me. > >Thanks! > >Best regards, > >Jason Rush > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > ________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From rush at citylinq.com Mon Jun 12 19:53:24 2000 From: rush at citylinq.com (Rush Family) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: Perl/Tk demos? In-Reply-To: <20000612224453.65206.qmail@hotmail.com> Message-ID: Hi Ricardo and SPUG, The answer that helped me most was to look for and run widget.bat, which will be installed with Tk. I will attach the answers I got and attach them in a separate message to you only. Jason -----Original Message----- From: owner-spug-list@pm.org [mailto:owner-spug-list@pm.org]On Behalf Of Ricardo Cardona Sent: Monday, June 12, 2000 3:45 PM To: spug-list@pm.org Subject: Re: SPUG: Perl/Tk demos? Someone on the SPUG list responded to the below June 2 message with a URL link to a source that had online TCL/TK demos. I meant to save that E-mail because I knew I would need that URL it in the near future. Well, I can kick myself in the head for having inadvertently erased it!! Will someone be so kind as to search there email archive for the response E-mail that has that URL link and forward it to me. I?m in a crunch and need that URL ASAP. ( like right now!) Thank you all in advance. >From: "Rush Family" >To: >Subject: SPUG: Perl/Tk demos? >Date: Thu, 1 Jun 2000 22:19:41 -0700 > > >Hi everyone -- I am new to Perl and to this Perl discussion group. > >I run the ActiveState release of Perl for Win32, build 522, and their dev >kit version 1.2.4. > >Where can I find an exhaustive demo of Tk on the Internet or on a CD-ROM? >One that shows all the different kinds of widgets and the code for each. >The >Tk module includes instructions for writing your own widget demos, but I am >hoping there is one huge monolithic TkDemo.pl already written and just >waiting for me. > >Thanks! > >Best regards, > >Jason Rush > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > ________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From chris at enthusiasm.com Mon Jun 12 20:09:05 2000 From: chris at enthusiasm.com (Christopher Cavnor) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: CGI.pm and browser redirection References: <01BFD47F.E70A24C0@tac-lx100-ip34.nwnexus.net> Message-ID: <394589B1.D6B21E54@enthusiasm.com> I have a script that, using CGI.pm, prints stuff to a Web page and redirects when finished. Simple right? but I can't get redirect to work. I know that it is doe to the header that is printed via CGI.pm, because all is well if I disable it. Problem is, I need it - so I was wondering if anyone knows a work-around. Here is the setup: #!/usr/bin/perl -w use strict; use CGI::Carp qw/fatalsToBrowser/; use CGI qw/:standard/; my $html = new CGI; print $html->header(-pragma=>'no-cache'); print $html->start_html; print $html->p("stuff"); print $html->end_html(); #redirect to ananlysis page when finished print $html->redirect( -location=>'http://207.202.194.220/analysis.html' ); exit(); Tried end_html before and after the redirect - no diffy. Appreciate any help, thanks! Chris - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From kevin at n2h2.com Mon Jun 12 20:15:19 2000 From: kevin at n2h2.com (Kevin Fink) Date: Wed Aug 4 00:07:22 2004 Subject: SPUG: CGI.pm and browser redirection In-Reply-To: <394589B1.D6B21E54@enthusiasm.com> Message-ID: I don't think you can use a Location header along with a 200 response code. It requires a 3xx response code. You'll probably have to use a meta refresh instead. Kevin On Mon, 12 Jun 2000, Christopher Cavnor wrote: > I have a script that, using CGI.pm, prints stuff to a Web page and redirects > when finished. Simple right? but I can't get redirect to work. I know that it > is doe to the header that is printed via CGI.pm, because all is well if I > disable it. Problem is, I need it - so I was wondering if anyone knows a > work-around. Here is the setup: > > #!/usr/bin/perl -w > > use strict; > use CGI::Carp qw/fatalsToBrowser/; > use CGI qw/:standard/; > > my $html = new CGI; > print $html->header(-pragma=>'no-cache'); > print $html->start_html; > > print $html->p("stuff"); > > print $html->end_html(); > > #redirect to ananlysis page when finished > print $html->redirect( -location=>'http://207.202.194.220/analysis.html' ); > > exit(); > > > Tried end_html before and after the redirect - no diffy. Appreciate any help, > thanks! > > Chris > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > ------------------------------------------------------------------------------ Kevin Fink N2H2, Creators of Bess and Searchopolis Chief Technology Officer 900 Fourth Avenue, Suite 3400 http://www.n2h2.com/ Seattle, WA 98164 VOICE: 206-336-1501 / 800-971-2622 FAX: 206-336-1541 ------------------------------------------------------------------------------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From res03v45 at gte.net Mon Jun 12 21:33:38 2000 From: res03v45 at gte.net (S) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: FW: Job? Contract? Send me a lifeline Regis? Message-ID: Hello- I originally posted this to spug@, but apparently that only goes to Tim Maher. He suggested I might get better results by actually posting to the group. The original message follows: -----Original Message----- From: J. Scott Schiller [mailto:res03v45@gte.net] Sent: Monday, June 12, 2000 6:52 PM To: spug@halcyon.com Subject: Job? Contract? Send me a lifeline Regis? The only difficult thing about a Majordomo is that I feel like I'm yelling into a crowd that might find my voice offensive. For this reason, I offer the following standard disclaimer: If I should say anything that suggests my foot is in my mouth, you may assume that is indeed the case. I apologize. The reason I am writing is twofold; I am interested in your group on a personal level, and I also desperately need help with a project I find myself way, way in over my head. I bet you never heard that before. First: I am a student at the UW and will be starting my senior year in the IS concentration of the Business School; I am also a working professional with over 15 years of management experience (real meaning: I ain't 20). Is it appropriate for neophytes to attend your meetings? How does one graduate to an appropriate level? Second: I need help with a project-I sense there would be very, very little work involved (no, really). I am more interested in having someone explain how I'm screwing up and how I might wend my way out of the mess than just contracting out the work. I am attempting to implement CGI scripts for Domain Registration (which I've successfully done) that work in a seamless fashion with Credit Card processing via Bank of America (this I've NOT successfully done) such that transactions process to full completion in real time. I sense that I'm very, very close; unfortunately, I am unable to discern my position in the code-forest. If you have the slightest interest in working through the problem with me, or even just fixing things so that they work, please e-mail me at res03v45@gte.net or scott@domainalchemy.com Thanks for reading.... Scott PS-I'm not rich, but would probably give a limb or two to make this problem go away :-) "Give a person a fish and feed them for a day; give a person a high-bandwidth connection and they won't bother you for weeks" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From starfire at zipcon.net Mon Jun 12 21:41:37 2000 From: starfire at zipcon.net (Richard Anderson) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Re: CGI.pm and browser redirection References: <01BFD47F.E70A24C0@tac-lx100-ip34.nwnexus.net> <394589B1.D6B21E54@enthusiasm.com> Message-ID: <010b01bfd4e0$e6beccd0$2f88ddd1@adcom133> You can't output HTML and a redirect header in a single CGI script. The Location header is only recognized if it is the first line of output. Your call to start_html outputs beginning and ending , , <META> tags and an opening <BODY> tag, so everything after that is interpreted as HTML. Reversing the order won't work either, as once the location header is read, the browser ignores all subsequent output. What you probably want is to use the REFRESH attribute of the META tag, which is commonly used for web pages that have been moved: <META HTTP-EQUIV="refresh" CONTENT="2; URL=http://mynewurl.com"> This says to wait two seconds, then replace the page with http://mynewurl.com I don't know if there is an argument to the CGI.pm header method to add this tag. (I generally avoid using CGI.pm for generating HTML - I can write the HTML myself faster than I can figure out what CGI.pm is going to produce. But I love the param method and use it heavily.) Richard.Anderson@unixscripts.com www.zipcon.net/~starfire/home (personal) www.unixscripts.com (corporate) ----- Original Message ----- From: "Christopher Cavnor" <chris@enthusiasm.com> Cc: <spug-list@pm.org> Sent: Monday, June 12, 2000 6:09 PM Subject: SPUG: CGI.pm and browser redirection > I have a script that, using CGI.pm, prints stuff to a Web page and redirects > when finished. Simple right? but I can't get redirect to work. I know that it > is doe to the header that is printed via CGI.pm, because all is well if I > disable it. Problem is, I need it - so I was wondering if anyone knows a > work-around. Here is the setup: > > #!/usr/bin/perl -w > > use strict; > use CGI::Carp qw/fatalsToBrowser/; > use CGI qw/:standard/; > > my $html = new CGI; > print $html->header(-pragma=>'no-cache'); > print $html->start_html; > > print $html->p("stuff"); > > print $html->end_html(); > > #redirect to ananlysis page when finished > print $html->redirect( -location=>'http://207.202.194.220/analysis.html' ); > > exit(); > > > Tried end_html before and after the redirect - no diffy. Appreciate any help, > thanks! > > Chris > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From ced at carios2.ca.boeing.com Mon Jun 12 22:04:37 2000 From: ced at carios2.ca.boeing.com (ced@carios2.ca.boeing.com) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: CGI.pm and browser redirection Message-ID: <200006130304.UAA15264@carios2.ca.boeing.com> Content-Length: 1157 Status: RO > I have a script that, using CGI.pm, prints stuff to a Web page and redirects > when finished. Simple right? but I can't get redirect to work. I know that it > is doe to the header that is printed via CGI.pm, because all is well if I > disable it. Problem is, I need it - so I was wondering if anyone knows a > work-around. Here is the setup: Since you mentioned workaround, have you considered frames... There's a example of writing and targetting different frames in CGI.pm's 'examples' directory. Rgds, -- Charles DeRykus - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From kevin at n2h2.com Mon Jun 12 22:10:34 2000 From: kevin at n2h2.com (Kevin Fink) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Re: CGI.pm and browser redirection In-Reply-To: <010b01bfd4e0$e6beccd0$2f88ddd1@adcom133> Message-ID: <Pine.LNX.4.21.0006121956410.4995-100000@constable.bess.net> On Mon, 12 Jun 2000, Richard Anderson wrote: > You can't output HTML and a redirect header in a single CGI script. The > Location header is only recognized if it is the first line of output. Your Actually, I don't think it has anything to do with the location in the output - it's whether or not the first line of the HTTP response contains a 3xx reply code. The Location header has to be in the response header, but the order doesn't matter, and it can't be in the body (which would normally be considered the first line of output from the perspective of the CGI script). An HTTP/1.0 response would look like: HTTP/1.0 302 Redirect to a new page (this text is irrelevant) Location: http://mynewurl.com <HTML> <HEAD><TITLE>Redirecting...

Redirecting...

The body is not required (and may or may not be displayed depending on the browser). I'm pretty sure you can put other headers in before the Location header although usually you don't need to. > What you probably want is to use the REFRESH attribute of the META tag, > which is commonly used for web pages that have been moved: > > This won't work if he doesn't know how long to wait before refreshing, though. Is there any way to refresh after all of the content has finished downloading instead of after a fixed time interval? I don't know of any (and it would probably be highly browser-dependent), but... The only other option I could think of was to look into JavaScript, which might be able to detect the end of the data stream and respond by redirecting to a new page. I don't know much about JS, though. Kevin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Mon Jun 12 22:28:15 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Trouble with -F: on shebang line Message-ID: <20000612202815.A1505@timji.consultix.wa.com> Although this script works correctly, which tells me that split's RE is not really :\n, but rather the : I asked for, it bothers me that it's showing the wrong RE!! Presumably, it's grabbing the \n that follows the shebang line and tagging that onto the : argument to the -F. I tried to put the -F argument earlier in the sequence, but then the Deparse output doesn't show me anything but my original program! I also tried putting quotes or //'s around the :, but that gave me syntax errors. Anybody know what's going on here? Anybody know how to get Deparse to show the correct RE for this program? #! /usr/bin/perl -wna -F: BEGIN { @ARGV or @ARGV='/etc/passwd'; } # show field one, which is user logname print "$F[0]\n" ; TIA, -Tim P.S. On a flight to Silicon Valley last Tuesday, I sat next to an elderly couple returning from the PerlWhirl "inside-passage" cruise (not geeks, just on same ship), who remarked that the Perl Whirlers looked very scruffy during the day in their jeans, but "like angels" at night in their tuxedos! 8-} As a catholic-school refugee who still has nightmares about showin up "out of uniform", I personally revolt at the idea of any dress code, but there's no disputing the fact that women of a certain age are suckers for an over-dressed man! Wish it were otherwise . . . *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES; 6/12: Int. Perl 6/15: Pat. Matching 8/14: UNIX 8/21: Shell | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* $ cat /tmp/show #! /usr/bin/perl -wna -F: BEGIN { @ARGV or @ARGV='/etc/passwd'; } # show field one, which is user logname print "$F[0]\n" ; $ perl -MO=Deparse,-a /tmp/show /tmp/show syntax OK Use of uninitialized value at /usr/lib/Perl5/5.00502/i586-linux/B/Deparse.pm line 1142. LINE: while (defined($_ = )) { @F = split(/:\n/, $_, 0); print "$F[0]\n"; } $ /tmp/show | head -3 root bin daemon $ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From christopher at cavnor.com Mon Jun 12 23:02:27 2000 From: christopher at cavnor.com (Christopher Cavnor) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Re: CGI.pm and browser redirection References: Message-ID: <01ab01bfd4ec$328f3680$919727d8@daneel> Read an excerpt in the CGI.pm book, it explained that you cannot use a header() call or output any HTML if you want to do a redirect. Bummer, but that is the way it works. ----- Original Message ----- From: "Kevin Fink" To: "Richard Anderson" Cc: "Christopher Cavnor" ; Sent: Monday, June 12, 2000 8:10 PM Subject: Re: SPUG: Re: CGI.pm and browser redirection > On Mon, 12 Jun 2000, Richard Anderson wrote: > > > You can't output HTML and a redirect header in a single CGI script. The > > Location header is only recognized if it is the first line of output. Your > > Actually, I don't think it has anything to do with the location in the > output - it's whether or not the first line of the HTTP response contains > a 3xx reply code. The Location header has to be in the response header, > but the order doesn't matter, and it can't be in the body (which would > normally be considered the first line of output from the perspective of > the CGI script). > > An HTTP/1.0 response would look like: > > HTTP/1.0 302 Redirect to a new page (this text is irrelevant) > Location: http://mynewurl.com > > > Redirecting... >

Redirecting...

> > The body is not required (and may or may not be displayed depending on the > browser). I'm pretty sure you can put other headers in before the Location > header although usually you don't need to. > > > What you probably want is to use the REFRESH attribute of the META tag, > > which is commonly used for web pages that have been moved: > > > > > > This won't work if he doesn't know how long to wait before refreshing, > though. Is there any way to refresh after all of the content has finished > downloading instead of after a fixed time interval? I don't know of > any (and it would probably be highly browser-dependent), but... > > The only other option I could think of was to look into JavaScript, which > might be able to detect the end of the data stream and respond by > redirecting to a new page. I don't know much about JS, though. > > Kevin > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From apond at amazon.com Mon Jun 12 23:15:50 2000 From: apond at amazon.com (Ashley Pond) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Re: CGI.pm and browser redirection References: <01ab01bfd4ec$328f3680$919727d8@daneel> Message-ID: <3945B576.F7387AB7@amazon.com> you can trick it in the start_html head after the header. something like this: print header, start_html( -title => "My Redirect", -head => meta({'HTTP-Equiv' => 'refresh', 'CONTENT'=>'2; URL=http://mynewurl.com'}), ); if you keep the HTML simple and the gifs small, you can make an educated guess about how long the page load will take. most webmasters (that i notice) make the redirect time pretty long and offer a link to click on if you'd rather not wait the full 10 seconds or whatnot. Christopher Cavnor wrote: > Read an excerpt in the CGI.pm book, it explained that you cannot use a > header() call or output any HTML if you want to do a redirect. Bummer, but > that is the way it works. > > ----- Original Message ----- > From: "Kevin Fink" > To: "Richard Anderson" > Cc: "Christopher Cavnor" ; > Sent: Monday, June 12, 2000 8:10 PM > Subject: Re: SPUG: Re: CGI.pm and browser redirection > > > On Mon, 12 Jun 2000, Richard Anderson wrote: > > > > > You can't output HTML and a redirect header in a single CGI script. The > > > Location header is only recognized if it is the first line of output. > Your > > > > Actually, I don't think it has anything to do with the location in the > > output - it's whether or not the first line of the HTTP response contains > > a 3xx reply code. The Location header has to be in the response header, > > but the order doesn't matter, and it can't be in the body (which would > > normally be considered the first line of output from the perspective of > > the CGI script). > > > > An HTTP/1.0 response would look like: > > > > HTTP/1.0 302 Redirect to a new page (this text is irrelevant) > > Location: http://mynewurl.com > > > > > > Redirecting... > >

Redirecting...

> > > > The body is not required (and may or may not be displayed depending on the > > browser). I'm pretty sure you can put other headers in before the Location > > header although usually you don't need to. > > > > > What you probably want is to use the REFRESH attribute of the META tag, > > > which is commonly used for web pages that have been moved: > > > > > > > > > > This won't work if he doesn't know how long to wait before refreshing, > > though. Is there any way to refresh after all of the content has finished > > downloading instead of after a fixed time interval? I don't know of > > any (and it would probably be highly browser-dependent), but... > > > > The only other option I could think of was to look into JavaScript, which > > might be able to detect the end of the data stream and respond by > > redirecting to a new page. I don't know much about JS, though. > > > > Kevin > > > > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > > > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From davidpa at lucent.com Tue Jun 13 21:48:05 2000 From: davidpa at lucent.com (Patterson, David S (David)) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: FW: function source grepping tool Message-ID: > -----Original Message----- > From: Patterson, David S (David) > Sent: Tuesday, June 13, 2000 7:41 PM > To: Dubuc, Paul M (Paul) > Subject: RE: function source grepping tool > > Ok, I spent about an hour on this. Modified a search/replace utility I > had to isolate blocks of code (complete functions, in your case) and then > search for items within those blocks. > > Here is the utility: > > <> > I did not clean up the help page to reflect all the tweaking I did to the > original utility program 'findtext'. > > Here's how you would use it: > > 1) To list all the files, and functions within the files containing the > string MY_QUEST, run the program in the file's directory (or a directory > above it) as follows > > findblock -s '*.c' -D '^\w+ *\(.+?^{.+?^}' 'MY_QUEST' > > 2) To just list the function names, pipe the output through grep, as > follows: > > findblock -s '*.c' -D '^\w+ *\(.+?^{.+?^}' 'MY_QUEST' | grep '^<' > > The -D option would have to be modified in the case of C++ code to allow > for colons in the function name. > > findblock -s '*.cpp' -D '^[\w:]+ *\(.+?^{.+?^}' 'case' | grep '^<' > ((I think, --didn't test this one)) > > Note that the -R (replace) option does not work as described in the help > text (due to the modifications for this problem). > It does work, however, in the original utility. Let me know if you are > interested in having a copy of it. > > Best regards, > > Dave Patterson > > > -----Original Message----- > From: Dubuc, Paul M (Paul) > Sent: Monday, June 12, 2000 12:31 PM > To: Patterson, David S (David) > Subject: Re: function source grepping tool > > Yes the functions are all ANSI C/C++. > > Paul > > "Patterson, David S (David)" wrote: > > > I have a tool I wrote a long time ago that allows full perl regexp > searches > > or search/replaces through files in an entire directory tree. I've > often > > had situations where I wanted to extend it in such a way that the seach > > pattern for locating the block of interest was separate from the search > > pattern I used to do the search/replace of text. I wrote this tool > (called > > findtext) in perl 4. Perl 4 is missing a lot of the sophistication in > the > > regular expression syntax that perl 5 has. It might be interesting to > > upgrade if (if necessary) to do this job. > > > > Question: are your functions of the following form? > > > > type > > function_name (param list... > > ...) > > { > > function body > > ... > > } > > > > If not, how are they formatted? > > > > > > > -----Original Message----- > > > From: Dubuc, Paul M (Paul) > > > Sent: Monday, June 12, 2000 10:12 AM > > > To: Patterson, David S (David) > > > Subject: Re: function source grepping tool > > > > > > I've been distracted from the problem by work demands, but I haven't > > > really > > > seen a good solution. I would be glad to read yours. Thanks. > > > > > > Paul > > > > > > "Patterson, David S (David)" wrote: > > > > > > > Did you find a solution to this? I had several ideas about this > (and > > > > probably one good one). Let me know if you're still interested.... > > > > > > > > Best regards, > > > > > > > > > --- > > > > "To do great important tasks, two things are > necessary, > > > a > > > > plan and not enough time..." > > > > > > > > > David Patterson > > > > > Software Engineer > > > > > Lucent Technologies * > > > > > 6464 185th Ave NE > > > > > Redmond, WA 98052-6736 > > > > > 425-558-8008 x 2172 > > > > > 888-501-4835 Pgr > > > > > davidpa@lucent.com > > > > > > > > > > > -- > > > Paul M. Dubuc (614) 860-7836 (voice & fax) > > > Lucent Technologies dubuc@lucent.com > > > Rm. 3s319 http://waterworks.cb.lucent.com/pmd/ > > > 6200 E. Broad St. > > > Columbus, OH 43213-1569 > > > > > -- > Paul M. Dubuc (614) 860-7836 (voice & fax) > Lucent Technologies dubuc@lucent.com > Rm. 3s319 http://waterworks.cb.lucent.com/pmd/ > 6200 E. Broad St. > Columbus, OH 43213-1569 > -------------- next part -------------- #!/opt/exp/bin/perl ## findtext by Dave Patterson 12 May 94 ## Ver 2.1 02 Sep 94 ## Ver 2.2 15 Jun 95 -- Added -s, -L switches ## Ver 2.3 14 Aug 95 -- Refined DOS vs whole word search styles ## Ver 3.0 14 Sep 98 -- Repair -P bugs ## ## NAME ## findtext - displays filename and lines containing matches to ## RegExpr in text files in current or deeper subdirectories. ## Optionally replaces matches with a replacement text string. ## ## SYNTAX ## findtext [-s "FileExpr"] [-i] [[-S] "TextSearchExpr"] [-I] ## [-R "TextReplExpr"] [-P "TextReplSwitches"] ## [-acEefIiLsvWw] [-l n] [-D "InputRecSep"] [-r [-C|-b]] ## [-?] ## ## DESCRIPTION ## findtext will search text files for a match to the Regular ## Expression in the current and deeper subdirectories. Output ## consists of a relative path/filename followed by lines con- ## taining matches to the regular expression prepended with ## "<". ## ## findtext only searches text files and skips any file that ## appears to have binary or non-text contents. findtext ## searches for any string match by default, but whole words or ## arbitrarily complex regular expressions can be searched for ## using the -w, -W, -e, or -E options. ## ## In DOS-style search expressions, /? + */ are treated as ## /.? .+ .*/, other nonalphanumerics are treated as literals, ## and expressions are assumed to be right & left-justified. ## ## findtext optionally replaces matched strings with a replace- ## ment text string. Options include auto-confirmation and/or ## auto-backup of changed files. ## ## ## OPTIONS ## -a Alphabetize (sort) file listing before searching. ## ## -b backup modified files. (Can't be used with -f) ## ## -c set file search pattern to "*.[Cch]" ## ## -C confirm replacments. Program prompts "Confirm: ([y]/n/f/a)" ## where: ## y - confirm change, ## n - do not make change, ## f - confirm change for remainder of current file, ## a - confirm all further changes. ## ## -d dry run replacements (display but don't actually write to ## file proposed changes) ## ## -D Specify alternate input record delimiter (separator). ## Default is \n (line by line). ## ## -e file search pattern is an extended regular expression ## (SED- or PERL-style. Default is DOS-style). ## ## -E text search pattern is an extended regular expression ## (SED- or PERL-style. Default is DOS-style). ## ## -f force processing of backup files. Normally backup and ## RCS files (*,n & *,v) are not processed. ## (Can't be used with -b) ## ## -i ignore case during file search. ## ## -I ignore case during text search. ## ## -l levels of directories to process. Don't descend deeper ## than this number (default: no limit) ## ## -L follow (descend into) soft-linked directories. ## (warning: infinite loops are possible in this mode) ## ## -o Override read-only flag on file (try to, anyway). ## ## -P "Expr" text replace switches (any of {geio}). Causes the following ## evaluation: s/{-S "Expr"}/{-R "Expr"/{-P "Expr"}. Assumes that ## s/TextSearchExpr/TextReplExpr/TextReplSwitches constitutes a fully ## specified perl extended regular expression. Any valid perl search ## expression is allowed. Runs slower than when using the built-in ## search/replace feature, but gives you more options. See the ## perl manual for syntax. ## ## -q Quiet mode; only list file names with text matches. ## Skips the diff listing. ## ## -s "Expr" file search pattern. ## ## -S "Expr" text search pattern. ("Expr" alone implies -S) ## ## -R "RepStr" replacement string for text matching text search pattern. ## ## -v verbose mode shows search matches and replaced lines, if appl. ## ## -w Search for whole word matches for file name pattern. ## (Note: do not use ^ or $ anchors in pattern with this switch). ## ## -W Search for whole word matches for text search pattern. ## (Note: do not use ^ or $ anchors in pattern with this switch). ## ## -? show syntax (also -h or -H) ## ## CAVEATS ## Quotes around RegExpr, RepStr are required if not a simple ## alphanumeric text string. ## ## EXAMPLES ## findtext -s zoo -S dogs # Find all files containing whose names ## contain the string "zoo" and search for ## the string "dogs". ## ## findtext -S dogs -E # Find all files containing string "dogs". ## ## # Find files ending in ".c" and then find the word dogs and ## # replace with word cats: ## ## findtext -s "*.c" -S dogs -R cats -W ## ## SEE ALSO ## Findfile (1), renfiles (1) ## # Default values: $NLEVELS = 9999; # Max levels # Process command line args: if (@ARGV) { foreach $ARG (@ARGV) { if ($DD == 2) { $DD = 1; $IRD = $ARG; } elsif ($L == 2) { $L = 1; $NLEVELS = $ARG; } elsif ($PP == 2) { $PP = 1; $SWITCHES = $ARG; } elsif ($S == 2) { $S = 1; $REGEXP = $ARG; } elsif ($SS == 2) { $SS = 1; $SREGEXP = $ARG; } elsif ($RR == 2) { $RR = 1; $SREPL = $ARG; } elsif ($ARG eq "-a") ## alphabetize (sort) file list { $A = 1; } elsif ($ARG eq "-b") ## backup changed files { $B = 1; } elsif ($ARG eq "-c") ## set file search string to "*.[Cch]" { $C = 1; } elsif ($ARG eq "-d") ## dry run changes { $D = 1; } elsif ($ARG eq "-D") ## alternate input record delimiter { $DD = 2; } elsif ($ARG eq "-C") ## confirm replacements { $CC = 1; } elsif ($ARG eq "-e") ## file search pattern is ERE { $E = 1; } elsif ($ARG eq "-E") ## text search pattern is ERE { $EE = 1; } elsif ($ARG eq "-f") ## force processing of backup files { $F = 1; } elsif ($ARG eq "-i") ## case insensitive file search { $I = "i"; } elsif ($ARG eq "-I") ## case insensitive text search { $II = "i"; } elsif ($ARG eq "-l") ## limit depth { $L = 2; } elsif ($ARG eq "-L") ## follow sym-links { $LL = 1; } elsif ($ARG eq "-o") ## override read-only flag { $O = 1; } elsif ($ARG eq "-P") ## text search string is a fully specified perl ERE. { ## Next arg contains search/replace switches. $PP = 2; } elsif ($ARG eq "-q") ## Quiet mode. No diff listings. { $Q = 1; } elsif ($ARG eq "-R") ## text replacement string { $RR = 2; } elsif ($ARG eq "-s") ## file search string { $S = 2; } elsif ($ARG eq "-S") ## text search string { $SS = 2; } elsif ($ARG eq "-v") ## verbose (same as -d -f switches in findfile) { $V = 1; } elsif ($ARG eq "-w") ## search for whole words matching file pattern { $W = 1; } elsif ($ARG eq "-W") ## search for whole words matching text pattern { $WW = 1; } elsif ($ARG =~ /^\-/) { $H = 1; } else { $SREGEXP = $ARG; } } } if ($H || $NLEVELS < 1 || $RR < 0 || $SS < 0 || $L < 0 || ($B || $CC) && ! $RR || $B && $F) { system ("cat $0 | grep \"^##\" | more"); exit (-1); } # Set up for file search string: if ($C) { $REGEXP = '.+\.[Cch]'; $E = 1; $W = 1; } elsif (! $REGEXP) # Default case is to process all text files: { $REGEXP = '.+'; $E = 1; } if ($E) # ere style { $RE = $REGEXP; if ($W) { # Make expression valid for whole words only: $RE = "(^|[\\W_])" . $RE . "(\$|[\\W_])"; } } else # dos style { $RE = $REGEXP; $DOT = "."; # Place a \ in front of all non-alpha chars: $RE =~ s/(\W)/\\$1/g; # Convert DOS wildcards to ERE wildcards: $RE =~ s/\\([*?+])/$DOT$1/g; $RE = "^" . $RE . "\$"; } study $RE; if ($V) { print "File ERE = /$RE/$I\n"; } # Set up for text search string: if (! $SREGEXP) # Default case is to show all text in files: { $SREGEXP = '^'; $EE = 1; } if ($EE || $PP) # ere style { $SRE = $SREGEXP; } else # dos style { $SRE = $SREGEXP; $DOT = "."; # Place a \ in front of all non-alpha chars: $SRE =~ s/(\W)/\\$1/g; # Convert DOS wildcards to ERE wildcards: $SRE =~ s/\\([*?+])/$DOT$1/g; } if ($WW) { # Make expression valid for whole words only: $SRE = '(^|\W)' . $SRE . '($|\W)'; } study $SRE; if ($V) { if ($PP) { print "Text ERE = s/$SRE/$SREPL/$SWITCHES\n"; } elsif ($RR) { print "Text ERE = s/$SRE/$SREPL/$II\n"; } else { print "Text ERE = s/$SRE/$II\n"; } } $PWD = `pwd`; chop $PWD; if ($V) { print "$PWD/\n"; } $LEVEL = 0; &Ckdir (".", $PWD); exit (0); sub Ckdir { $OLDDIRPATH = $DIRPATH; local (@DIRLIST, @DIRLIST0, $DIRPATH, $FN, $PARENTDIR, $CURRENTDIR); $PARENTDIR = $_[1]; $CURRENTDIR = "${PARENTDIR}/${_[0]}"; if (! chdir ($_[0])) { print "Error: Couldn't cd down to $_[0]!!!"; return; # SHOULD never get here, but... } $LEVEL++; opendir (DIR, "."); if ($A) # alphabetize (sort) file names first { @DIRLIST0 = readdir (DIR); @DIRLIST = sort @DIRLIST0; } else { @DIRLIST = readdir (DIR); } $DIRPATH = "${OLDDIRPATH}${_[0]}/"; closedir (DIR); foreach $FN (@DIRLIST) # first print files: { if (! -d $FN) { if ($I ? $FN =~ /$RE/i : $FN =~ /$RE/) { # Process file if it is a text file and (file is not a comma version # or file is a comma version and "force processing" flag is on): if (-T $FN && ($FN !~ /,\w+$/ || $F)) # Text processing section: { $CF = 0; $MATCH = 0; $FLISTED = 0; $FNT = $FN; # All reading is done on file $FNT if ($RR) # if replace text option, back up file before opening # it for output: { if (! -w $FN) { print "$FN not writeable. Skipping;\n\n"; next; } if (! $D) { $FNT = &Backup_file ($FN, "", 0); $STATUS = open (FO1, ">$FN"); if ($STATUS != 1) { die "Error opening $FN for writing. Exiting;\n\n"; } } } $STATUS = open (FI1, $FNT); undef $/; while () # Loops only once with undef $/... { @A = ($_ =~ /$IRD/gsm); $/ = "\n"; foreach $_ (@A) { # print "\n[$_]\n"; if (! $II ? /$SRE/o : /$SRE/io) { $MATCH++; if (! $FLISTED) { print "${DIRPATH}${FN}\n"; $FLISTED++; } if (! $Q) { print "< $_\n\n"; } if ($RR) { if ($CC) { $ORIG = $_; } if ($PP) # Fully specified regexp evaluation: { eval "s/$SRE/$SREPL/$SWITCHES"; } elsif ($EE) # if ERE text search strring: { $II ? s/$SRE/$SREPL/gio : s/$SRE/$SREPL/go; } else # Dos-like version { $II ? s/$SRE/$1$SREPL$2/gio : s/$SRE/$1$SREPL$2/go; } if (! $Q) { print "> $_"; } if ($CC && ! $CF) { print "Confirm: ([y]/n/f/a) "; $ANS = ; chop $ANS; if ($ANS =~ /^[Nn]/) { print "Line not changed.\n\n"; $_ = $ORIG; $MATCH--; } elsif ($ANS =~ /^[Ff]/) # No further confirms this file. { $CF = 1; } elsif ($ANS =~ /^[Aa]/) # No further confirms required. { $CC = 0; } else { print "\n"; } } } } if ($RR && ! $D) { print FO1 $_; } } close FI1; if ($RR && ! $D) { close FO1; if (($MATCH && ! $B) || ! $MATCH) { system ("rm -f $FNT"); # kill the backup } } if ($MATCH && ! $Q) { print "\n"; } } } } } } foreach $FN (@DIRLIST) # next print directory names: { if ((-d $FN) && ! ($FN =~ /^\.\.?$/)) { if (-x $FN) { $AD = ""; } else { $AD = " (Access denied)"; } if ($V) # case where we always want to print the dir: { if (-l $FN) { print "${DIRPATH}${FN}@/${AD}\n"; } else { print "${DIRPATH}${FN}/${AD}\n"; } } # This is where we decide whether to descend into the current dir: # We do if: (1) haven't exceeded the max level, and # (2) directory allows us access, and # (3) we are allowed to follow symbolic links if ($LEVEL < $NLEVELS && ! $AD && ($LL || ! (-l $FN))) { &Ckdir ("$FN", "$CURRENTDIR"); } } } $LEVEL--; chdir ("$PARENTDIR"); } # ############################################################################ # # Sub Name: Backup_file # # Description: Looks for all versions of file name from $FILE_SPEC # in $BACKUP_LOC. Makes a backup of file as follows: # Program copies filename to filename,# where # is next highest # backup number in sequence. File name cannot be # a wild card. # # Arguments: NAME DESCRIPTION # $FILE_SPEC Fully specified file to backup # $BACKUP_LOC Directory to place backup copy, e.g: # "./.backup" - for ./backup directory. # "" - for same directory. # $NOTIFY 0 - No backup message # n - (n != 0) print backup message # Globals: # # Returns: $BACKUP_FILE Name of backup file, -or- # Failure # # ############################################################################ sub Backup_file { local ($FILE_SPEC, $BACKUP_LOC, $NOTIFY) = @_; local ($BKP_SPEC); # file name to search for in backup dir. local (@FILES); # list of existing versions of $FILE_NAME local ($FILE_NAME); # Name of file (no dir path) local ($FILE_NAME_RX); # Name of file converted to a perl search string local ($HIGH_VN); # Highest version not found so far local ($HIGH_FN); # FN of highest version no found so far local ($LATEST_BKP_VN); # Computed new version no for backup local ($LATEST_BKP_FN); # Fully specified new backup file name local ($THIS_FILE_VN); # Current file version number if (@_ != 3) { die "Error: sub Backup_file argc error!\n"; } if (-l $FILE_SPEC) { # handle softlinks by backing up file link is connected to: $TMP = `ls -l $FILE_SPEC`; ($FILE_SPEC) = ($TMP =~ /-> (.+)$/); # print "FILE_SPEC is now [$FILE_SPEC]\n"; } # Extract the file name from the file spec: ($FILE_NAME) = ($FILE_SPEC =~ /([^\/]+)$/); # Create a regular expression version of the file name: $FILE_NAME_RX = $FILE_NAME; $FILE_NAME_RX =~ s/([\W])/\\$1/g; if ($BACKUP_LOC) { $BKP_SPEC = "$BACKUP_LOC/$FILE_NAME"; } else { $BKP_SPEC = "$FILE_SPEC"; } $HIGH_VN = -1; $HIGH_FN = "${FILE_SPEC}_$$"; # Create a list of all files matching the filespec in the # backup directory: @FILE = `ls -d $BKP_SPEC* 2>/dev/null`; foreach (@FILE) { $CURFILE = $_; chop $CURFILE; # Determine the version number of this file (-1 if none): ($THIS_FILE_VN) = ($CURFILE =~ /$FILE_NAME_RX,(\d+)$/); $THIS_FILE_VN = (length ($THIS_FILE_VN) ? $THIS_FILE_VN : -1); if ($THIS_FILE_VN > $HIGH_VN) { $HIGH_VN = $THIS_FILE_VN; $HIGH_FN = $CURFILE; } } $LATEST_BKP_VN = $HIGH_VN + 1; $LATEST_BKP_FN = "$BKP_SPEC,$LATEST_BKP_VN"; # print "> FILE_SPEC[$FILE_SPEC] HIGH_FN[$HIGH_FN] LATEST_BKP_FN[$LATEST_BKP_FN]\n"; if (-d $FILE_SPEC) { $? = "1"; } else { system ("cmp -s $FILE_SPEC $HIGH_FN"); } if ($? || "$FILE_SPEC" eq "$HIGH_FN") { if (-e $FILE_SPEC) { if (-d $FILE_SPEC) { $RFLAG = "-r"; # If file is a directory, back it up recursively $DFLAG = "directory "; } if ($NOTIFY) { print "Backing up $DFLAG$FILE_SPEC to $LATEST_BKP_FN.\n"; } $ERR1 = system ("cp -p $RFLAG $FILE_SPEC $LATEST_BKP_FN"); } else # File doesn't exist so just touch backup file. { if (-z $HIGH_FN) { warn "$FILE_SPEC does not exist. Backup file $LATEST_BKP_FN is empty.\n"; } } if ($ERR1) { warn "\nPROBLEM: Can't copy $FILE_SPEC to $LATEST_BKP_FN\n"; die "Exiting.\n\n"; } } else # Don't back up if last backup file is identical: { if ($NOTIFY) { print "Identical file $HIGH_FN already exists.\n"; } $LATEST_BKP_FN = $HIGH_FN; } return $LATEST_BKP_FN; } From gfb at sdc.cs.boeing.com Wed Jun 14 10:15:15 2000 From: gfb at sdc.cs.boeing.com (Gareth Beale) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: UW Certificate program in PERL Message-ID: <200006141515.IAA06866@klawatti.sdc.cs.boeing.com> Has anybody looked into or taken the UW Certificate Program in PERL? I am interested, but I prefer the Distance Learning format (little 'un at home, no free evenings), and this one is only offered in the classroom. However, it is offered on the Eastside, so I am thinking about it. I'd be interested in any feedback anyone has on this course. Gareth Beale Gareth Beale (425) 865-5375 # e-mail: The Boeing Company # gareth.beale@boeing.com P.O. Box 3707, MC 7J-04 # Seattle, Wa. 98124-2207 # fax: (425) 865-2221 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Wed Jun 14 11:49:28 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Does tie() do file-locking? Message-ID: <20000614094928.A9238@timji.consultix.wa.com> I'm teaching my "Intermediate Perl" class this week, and some questions about file-locking have arisen. I could probably find the answers myself by reading some source code, but I'd rather spend my time helping my students on their lab assignments instead, so I thought I'd ask if anybody knows the answers: 1) Does the -i invocation option lock the files it processes? (Seems like it should, but if it does, that's not documented!) 2) Does tie() do file-locking on its own? If not, how do programmers protect the tied-file from disruptive accesses? (such as that of a daemon program, or 500 "nobody UIDs" accessing the same CGI program?) 3) When does the file tied to a hash get updated? Immediately on changes to the hash? Not until UNIX flushes the buffer holding the changes (via the next sync() )? Whenever the writer of the *DB*_file module feels like doing it? (Seems to me that file-locking should ideally be done on a per-record basis by the *DB*_file module itself, but I'm not finding any relevant documentation, so please clue me in if you know!) TIA, *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES; 6/12: Int. Perl 6/15: Pat. Matching 8/14: UNIX 8/21: Shell | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From gfb at sdc.cs.boeing.com Wed Jun 14 11:55:01 2000 From: gfb at sdc.cs.boeing.com (Gareth Beale) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: UW Certificate program in PERL Message-ID: <200006141655.JAA07161@klawatti.sdc.cs.boeing.com> > From chris@enthusiasm.com Wed Jun 14 09:43:42 2000 > From: Christopher Cavnor > Subject: Re: SPUG: UW Certificate program in PERL > > Didn't know that there was one. Do you have a URL on this? > http://www.outreach.washington.edu/extinfo/certprog/per/per_main.asp - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From bxs at sdc.cs.boeing.com Wed Jun 14 12:29:29 2000 From: bxs at sdc.cs.boeing.com (Barry Sharp) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Does tie() do file-locking? Message-ID: <200006141729.KAA15029@calwah.sdc.cs.boeing.com> Tim, An OS viewpoint: File locking is performed by OS via special system call. In typical UNIX this feature is voluntary -- that is if a file is requested to be locked by process A then another process B that wishes to access same file must enquire about the file lock state and optionally wait or abort if set, such as 'fd = open("lockfile", O_RDONLY | O_NDELAY);'. Some UNIX systems employ madatory file locking such that process B (as above) need not doing anything special when accessing a locked file -- it simply waits unless it is coded to do otherwise. Typically a file is first opened and then a system call is made to perform the file lock; such as 'if (fcntl(fd, F_SETLK, &lock) == -1)' for example. Files can be locked in their entirety or for a particular byte range. I strongly suspect that file locking features aren't consistent in their operations across machine platforms -- something to be aware of at least. File locking has it's dangers. Especially so if OS doesn't clean up after mis-behaving programs and/or system interruptions. Other symptoms more difficult to diagnose occur when a process seemingly hangs waiting on something -- a file lock to release or expire, or what? This is a tough one to figure without good debugging tools available for reviewing process states and their memory contents etc. Hope that helps some from an OS viewpoint. Hey, keep your students noses to the grind stone -- I was hoping to attend but somehow got distracted by other things. I understand you do have some fine Boeing folks in your class, right? Regards... Barry Sharp > X-Authentication-Warning: happyfunball.pm.org: mjordomo set sender to owner-spug-list@pm.org using -f > Date: Wed, 14 Jun 2000 09:49:28 -0700 > From: Tim Maher/CONSULTIX > To: spug-list@pm.org > Subject: SPUG: Does tie() do file-locking? > > I'm teaching my "Intermediate Perl" class this week, and some questions > about file-locking have arisen. I could probably find the answers myself by > reading some source code, but I'd rather spend my time helping my students > on their lab assignments instead, so I thought I'd ask if anybody knows > the answers: > > 1) Does the -i invocation option lock the files it processes? > (Seems like it should, but if it does, that's not documented!) > > 2) Does tie() do file-locking on its own? If not, how do > programmers protect the tied-file from disruptive accesses? > (such as that of a daemon program, or 500 "nobody UIDs" accessing > the same CGI program?) > > 3) When does the file tied to a hash get updated? Immediately > on changes to the hash? Not until UNIX flushes the buffer > holding the changes (via the next sync() )? Whenever the > writer of the *DB*_file module feels like doing it? > > (Seems to me that file-locking should ideally be done on a > per-record basis by the *DB*_file module itself, but I'm > not finding any relevant documentation, so please clue me in > if you know!) > > TIA, > > *========================================================================* > | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | > | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | > | CLASSES; 6/12: Int. Perl 6/15: Pat. Matching 8/14: UNIX 8/21: Shell | > | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | > *========================================================================* > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Wed Jun 14 13:29:28 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Does tie() do file-locking? Message-ID: <20000614112928.C9566@timji.consultix.wa.com> >Tim, >Camel p155 (dbmopen) says something about this. Not a lot, but hope it >helps. >Brian Aha! p. 155 points me to p. 392-393 for details on DB_File, where there's an example showing how you can lock the tied-hash's entire file. The upshot is that all you have to do is toggle whole-file locks before and after every modification to your tied-hash and you can feel safe (Unfortunately, doing so completely shatters the illusion that you're dealing with a hash!) I was hoping for something more automatic and sophisticated than this. . . Since the DB_File module knows as well as I do when I'm changing the hash, why can't I just tell it to do the locking for me? *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES; 6/12: Int. Perl 6/15: Pat. Matching 8/14: UNIX 8/21: Shell | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From ChrisM at courtlink.com Wed Jun 14 14:00:17 2000 From: ChrisM at courtlink.com (Christopher Maujean) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Does tie() do file-locking? Message-ID: <588DDEA4CC3AD411AE5200508BC5D2111E7931@hqmsx01.internal.courtlink.com> Probably wouldn't take much to subclass the DB_File class and make a Locking_DB_File tie... -----Original Message----- From: Tim Maher/CONSULTIX [mailto:tim@consultix-inc.com] Sent: Wednesday, June 14, 2000 11:29 AM To: spug-list@pm.org Subject: RE: SPUG: Does tie() do file-locking? >Tim, >Camel p155 (dbmopen) says something about this. Not a lot, but hope it >helps. >Brian Aha! p. 155 points me to p. 392-393 for details on DB_File, where there's an example showing how you can lock the tied-hash's entire file. The upshot is that all you have to do is toggle whole-file locks before and after every modification to your tied-hash and you can feel safe (Unfortunately, doing so completely shatters the illusion that you're dealing with a hash!) I was hoping for something more automatic and sophisticated than this. . . Since the DB_File module knows as well as I do when I'm changing the hash, why can't I just tell it to do the locking for me? *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES; 6/12: Int. Perl 6/15: Pat. Matching 8/14: UNIX 8/21: Shell | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tleffler at u.washington.edu Wed Jun 14 18:55:45 2000 From: tleffler at u.washington.edu (Trevor Leffler) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Web developer position at UW Message-ID: <39481B81.BB1A47AD@u.washington.edu> I believe that I have seen position descriptions posted to this list in the past, so I'm taking a chance at posting one myself. I will simply leave the URL to the position below. Please feel free to send questions or comments my way. http://www.washington.edu/admin/employment/2000archive/04-2000archive/2000-0301.html Thanks, -- Trevor Leffler, Software Developer UWired/PETTT, University of Washington Box 353080, (206) 616-8153 FAX: (206) 616-2873 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From billa at willapabay.org Wed Jun 14 20:00:44 2000 From: billa at willapabay.org (Bill Alford) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Way off subject: XML as HTML replacement? References: <01BFD47F.E70A24C0@tac-lx100-ip34.nwnexus.net> Message-ID: <39482ABC.4DCD99E1@willapabay.org> The way I like to look at XML is as a generic way to pass around data. Instead of the DTD being a Document Type Definition, think of it as a Data Type Definition. Currently I've been seeing XML used primarily as a way to move data around in a clean and well structured format. The best example that I've seen is to think of the data behind a store catalog. You have the prices, pictures, descriptions, names, etc. Now you want a clean way to move the data around (XML) and then view it (XSL). As the XML family gets more formalized we'll start seeing more and more data showing up on the web as XML instead of HTML. Then again, what will probably happen is there will be XML behind the scenes, translated by XSL into the HTML that your browser sees. I haven't been following XSL and XML standards closely, but the last I remembered (it is very possible that I'm wrong now) the specs weren't completed for what IE implemented. Basically it's an early version of the specs that was implemented in IE. Check the w3c for the latest news. There was a May 12th posting about XSLT about a recent (E)SPUG meeting. It gave (what I think is) a good feel for what you can currently do with it. Here's the message that I saved: -------------------------------- Subject: SPUG: XML/XSLT Presentation Text Date: Fri, 12 May 2000 10:03:53 -0700 From: Asim Jalis To: spug-list@pm.org The text version of the talk is up. The URL is http://www.cobaltgroup.com/~ajalis/xmltext In case people are curious, no, I did not use XSLT to generate it. There is a deep irony in there somewhere :-) Asim ---------------------------------- The link above still looks good. Disclaimer: I don't use XML at all right now. I used to work at a place where we were thinking of using it to store parts of a commonly used document, but we weren't able to get anywhere (there were too many special cases in the various pages for the DTD and we ran out of time). So, take what you will from this. Bill Joe Devlin wrote: > > Hello Michael, > > I had a similar question around the same time as you, > because I've heard so much hype about it being the > thing to be doing. > > I went to Borders in Seattle and scanned through all > the books on XML and found that it appears that XML > is only read by Internet Explorer 5. > > The graphic development tool Dreamweaver on a simple test > has the option of reading an XML file but it doesn't > seem to open up the file the same as HTML. > > If I were to hand code XML for some of my Perl scripts, then > the graphics designers wouldn't be able to use it with dreamweaver. > So we have decided to hold off for a while... > > Could be a case of too much ignorance on my part. But > the process seemed a little bleeding edge and we have work to do. > > Joe > ---------- > From: Michael Dahlquist[SMTP:elephant@cnw.com] > Sent: Friday, June 09, 2000 7:32 AM > To: spug-list@pm.org > Subject: SPUG: Way off subject: XML as HTML replacement? > > Okay, this is way off subject - ignore it if you see fit. > > Does anyone in the known world use XML as a replacement for HTML? > > If there were a fast server-side XML-to-HTML parser, would anyone be > excited, since they could now design stuff using XML? > > Is XML useful at all as a web design tool? > > I've been desperately seeking an account of the current acceptance of XML > as a tool, especially as a web design tool, & I can't find much. > > Thank you. I apologize in advance. > > Michael > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From lou at visca.com Fri Jun 16 03:32:01 2000 From: lou at visca.com (Lou Hevly) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Does -i invocation lock files? was Re: Does tie()... In-Reply-To: <20000614094928.A9238@timji.consultix.wa.com> Message-ID: <3.0.6.32.20000616093201.00848a90@visca.com> At 09:49 14/06/00 -0700, Tim Maher/CONSULTIX wrote: >I'm teaching my "Intermediate Perl" class this week, and some questions >about file-locking have arisen. I could probably find the answers myself by >reading some source code, but I'd rather spend my time helping my students >on their lab assignments instead, so I thought I'd ask if anybody knows >the answers: > > 1) Does the -i invocation option lock the files it processes? > (Seems like it should, but if it does, that's not documented!) AFAIK, whether or not the -i invocation locks is irrelevant if you use 'semaphor' file locking; you might point your students to Mark-Jason Dominus's article at http://www.plover.com/~mjd/perl/TPC/1998/Hardware-notes.html#Semaphore_Files Here's a demo that deletes a username from .htpasswd; if this *isn't* foolproof, then I would very much appreciate hearing how it might fail. We'll assume that this is either the only program on the system writing to .htpasswd, or that all other programs that do use the same semaphor locking file. use Fcntl qw(:flock); @ARGV = '/path/to/.htpasswd'; my $semaphor = '/path/to/file.lock'; open S, "> $semaphor" or die $!; flock S, LOCK_EX; $^I = '.orig'; while (<>) { print unless /^$username/ } close F; close S; -- All the best (Ad?u-siau), Lou Hevly lou@visca.com http://www.visca.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From lorraine at nw.saic.com Fri Jun 16 12:09:25 2000 From: lorraine at nw.saic.com (Lorraine Johnson) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Re: CGI.pm and browser redirection Message-ID: <3.0.32.20000616100925.00919520@zephyr.nw.saic.com> At 08:10 PM 6/12/00 -0700, Kevin Fink wrote: >... >The only other option I could think of was to look into JavaScript, which >might be able to detect the end of the data stream and respond by >redirecting to a new page. I don't know much about JS, though. There's an onLoad event handler you put in the body tag. The referenced function executes after the page loads (text and graphics in, applets and plugins started). The function itself goes inside the head tags and can reset the location. If you want to add a delay, there's a timer you can set. Danny Goodman's "JavaScript Bible" is pretty much the standard reference for JavaScript, but I found Nick Heinle's "Designing with JavaScript" to be very readable. (Okay, okay, it's actually fun to read - for a computer book!) Cheers, Lorraine ................................... J. Lorraine Johnson SAIC/Sea Technology lorraine@nw.saic.com v: (425) 482-3316 f: (425) 485-5566 http://www.nw.saic.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From ced at carios2.ca.boeing.com Fri Jun 16 16:18:24 2000 From: ced at carios2.ca.boeing.com (ced@carios2.ca.boeing.com) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Does -i invocation lock files? was Re: Does tie()... Message-ID: <200006162118.OAA18521@carios2.ca.boeing.com> At 09:49 14/06/00 -0700, Tim Maher/CONSULTIX wrote: >I'm teaching my "Intermediate Perl" class this week, and some questions >about file-locking have arisen. I could probably find the answers myself by >reading some source code, but I'd rather spend my time helping my students >on their lab assignments instead, so I thought I'd ask if anybody knows >the answers: > > 1) Does the -i invocation option lock the files it processes? > (Seems like it should, but if it does, that's not documented!) The Camel shows the following equivalence: -i.bak ---> rename($ARGV, $ARGV . '.bak'; open(ARGVOUT, ">$ARGV"); So I don't believe there's any C. I just tried the following and the second process has no problem getting an exclusive lock: process 1: perl -pi.bak -e 'sleep 60' /tmp/tmp process 2: perl -e 'open(F,">/tmp/tmp") or die $!; flock F,2 or die $!' Rgds, -- Charles DeRykus - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From spug at halcyon.com Mon Jun 19 00:18:42 2000 From: spug at halcyon.com (Seattle PERL Users Group) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: June Meeting: NOT! Message-ID: <20000618221842.A28849@halcyon.com> SPUG-o-maniacs, For various reasons, including the many upcoming Conway-esque events looming in early July, we won't be having our usual meeting this month (6/20). For the usual reason that "The Perl Conference" conflicts with our July 3rd Tuesday meeting, we won't be having that one either! So August is next! Anybody willing to make a presentation at the August 15th meeting, send email to spug@halcyon.com -Tim ==================================================================== | Tim Maher, Ph.D. Tel/Fax: (206)781-UNIX | | SPUG Founder Email: spug@halcyon.com | | Seattle Perl Users Group: http://www.halcyon.com/yumpy/spug | ==================================================================== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From spug at halcyon.com Mon Jun 19 10:40:13 2000 From: spug at halcyon.com (Seattle PERL Users Group) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: June Meeting: NOT! In-Reply-To: <20000618221842.A28849@halcyon.com>; from spug@halcyon.com on Sun, Jun 18, 2000 at 10:18:42PM -0700 References: <20000618221842.A28849@halcyon.com> Message-ID: <20000619084013.B10232@halcyon.com> On Sun, Jun 18, 2000 at 10:18:42PM -0700, Seattle PERL Users Group wrote: > SPUG-o-maniacs, > > For various reasons, including the many upcoming Conway-esque events > looming in early July, we won't be having our usual meeting this month > (6/20). > > For the usual reason that "The Perl Conference" conflicts with our > July 3rd Tuesday meeting, we won't be having that one either! What I meant there was the 3rd-Tuesday in July, which means July 18, rather than July 3rd. > > So August is next! Anybody willing to make a presentation at the August > 15th meeting, send email to spug@halcyon.com > > -Tim ==================================================================== | Tim Maher, Ph.D. Tel/Fax: (206)781-UNIX | | SPUG Founder Email: spug@halcyon.com | | Seattle Perl Users Group: http://www.halcyon.com/yumpy/spug | ==================================================================== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From Ryan at e-valuations.com Mon Jun 19 19:51:31 2000 From: Ryan at e-valuations.com (Ryan Ames) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: sorting an array Message-ID: <11BB3890FA03D31193C700A0CC3F64D7705968@server.e-valuations.com> I am kind of a newbie to perl and was wondering if there was a quick way to do a sort on an array of long ints. My array would look something like this. @myArray = (123000, 122956, 239210, 128967, 543902, 209031, 333910); Any help would be greatly appreciated.. Ryan Ames E-valuations.com ryan@e-valuations.com 120 Lakeside Ave, Suite 330 phone: 206.328-9885 ext.363 Seattle, WA 98122 fax: 206.328.7091 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From kevin at n2h2.com Mon Jun 19 20:06:44 2000 From: kevin at n2h2.com (Kevin Fink) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: sorting an array In-Reply-To: <11BB3890FA03D31193C700A0CC3F64D7705968@server.e-valuations.com> Message-ID: On Mon, 19 Jun 2000, Ryan Ames wrote: > I am kind of a newbie to perl and was wondering if there was a quick way to > do a sort on an array of long ints. > > My array would look something like this. > > @myArray = (123000, 122956, 239210, 128967, 543902, 209031, 333910); Sorting by numerical order or something more complicated? The former is easy: @mySortedArray = sort { $a <=> $b } @myArray; Kevin - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From Ryan at e-valuations.com Mon Jun 19 20:52:52 2000 From: Ryan at e-valuations.com (Ryan Ames) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: sorting an array Message-ID: <11BB3890FA03D31193C700A0CC3F64D770596A@server.e-valuations.com> thanks.... -----Original Message----- From: Sanford Morton [mailto:smorton@pobox.com] Sent: Monday, June 19, 2000 6:55 PM To: Ryan Ames Subject: SPUG: sorting an array Ryan Ames writes: > I am kind of a newbie to perl and was wondering if there was a quick way to > do a sort on an array of long ints. > > My array would look something like this. > > @myArray = (123000, 122956, 239210, 128967, 543902, 209031, 333910); Heheh, welcome to Perl, which makes easy things easy: @mySortedArray = sort @myArray; for (@mySortedArray) { print "$_ "}' ==> 122956 123000 128967 209031 239210 333910 543902 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From kevin at n2h2.com Mon Jun 19 21:04:12 2000 From: kevin at n2h2.com (Kevin Fink) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: sorting an array In-Reply-To: <11BB3890FA03D31193C700A0CC3F64D770596A@server.e-valuations.com> Message-ID: Careful, the default sort is a "string" sort, not a "numeric" sort: perl -e 'print join(" ",sort 9,10,11),"\n"'; 10 11 9 perl -e 'print join(" ",sort { $a <=> $b } 9,10,11),"\n"'; 9 10 11 Kevin On Mon, 19 Jun 2000, Ryan Ames wrote: > thanks.... > > -----Original Message----- > From: Sanford Morton [mailto:smorton@pobox.com] > Sent: Monday, June 19, 2000 6:55 PM > To: Ryan Ames > Subject: SPUG: sorting an array > > > Ryan Ames writes: > > I am kind of a newbie to perl and was wondering if there was a quick way > to > > do a sort on an array of long ints. > > > > My array would look something like this. > > > > @myArray = (123000, 122956, 239210, 128967, 543902, 209031, 333910); > > Heheh, welcome to Perl, which makes easy things easy: > > @mySortedArray = sort @myArray; > for (@mySortedArray) { print "$_ "}' > ==> 122956 123000 128967 209031 239210 333910 543902 > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > ------------------------------------------------------------------------------ Kevin Fink N2H2, Creators of Bess and Searchopolis Chief Technology Officer 900 Fourth Avenue, Suite 3400 http://www.n2h2.com/ Seattle, WA 98164 VOICE: 206-336-1501 / 800-971-2622 FAX: 206-336-1541 ------------------------------------------------------------------------------ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Tue Jun 20 13:48:44 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: WashTech Ind. Contractor Seminar Message-ID: <20000620114844.B6881@timji.consultix.wa.com> FYI, spugsters! -Tim You have received this mail from the Washington Alliance of Technology Workers. For information about subscribing or unsubscribing, skip to the end of this mail. ---------------------------------------------- 6/19/00 HOW TO BECOME AN INDEPENDENT HIGH-TECH PROFESSIONAL Running low on excuses to avoid company picnics? Stuck doing COBOL in a Web world? Not getting paid for what you're worth? Go independent. Come to a WashTech-sponsored seminar on Wednesday, June 28: "How to Become an Independent Web Professional." Speakers will include an independent Web professional, an attorney/CPA, a comprehensive insurance provider and a principal of a full-disclosure Web consulting firm. To RSVP and register for the seminar, visit: http://www.washtech.org/about/training/062800_icsem.php3 Questions to be addressed include: -- How much more will I make as an independent? -- Where do I get insurance? -- How do I make the switch from W-2 (employee) to 1099 (independent)? -- Where do I get challenging Web contracts? WHAT: "How to Become an Independent High-Tech Professional" -- a seminar and discussion focused on benefit, tax, and small business issues facing independent contractors in the IT industry. WHEN: Wednesday, June 28, 6:45-7 p.m. networking; 7-8:30 p.m. seminar WHERE: Lake Washington School District Administration and Resource Center Building, 6250 NE 74th St., Redmond, WA. You can find detailed directions on the district's Web site at: http://www.lkwash.wednet.edu/lwsd/html/schools/directions.asp COST: Free WHO: A panel of four industry professionals, including: -- Monica Gianni, attorney and CPA of The Gianni Law Firm (http://firms.findlaw.com/Thegiannilawfirm). -- Jeff Williams, sales representative of Cornerstone Marketing, an insurance sales agency. -- An independent Web professional TBA. -- Ken Hammond, principal of White Hammond Consulting (www.whitehammond.com), a full-disclosure Web consulting firm that gives its contractors 82 percent of the bill rate. (If you would like to be notified via email of challenging Web contracts from White Hammond, you may subscribe to their jobs list at www.whitehammond.com/html/jobs.htm) CO-SPONSORS: The seminar is co-sponsored by White Hammond Consulting, Inc., Seattle Webgrrls (www.seattlewebgrrls.org) and the University Book Store (www.bookstore.washington.edu). Staff from the bookstore will be at the event with books on Web development, independent contracting and tax issues. Seminar attendees will be able to purchase these books at 15 percent off regular retail prices. RSVP: The event is free, but you must RSVP by registering via the Web form at the URL at the top of this mail. If you are interested in the seminar but cannot attend, please register anyway, check the box saying that you cannot attend, and we'll send you a detailed seminar packet and presentation info on the day of the conference. ******** For more info on WashTech's mission and goals, see: http://www.washtech.org/mission_goals.html To join WashTech online, see: https://secure.speakeasy.net/washtech/join_form.html ----------------------------------------------- The WashTech News, a free digest of news of the Washington Alliance of Technology Workers, is delivered via email bimonthly or whenever issues warrant. We accept all confirmed subscriptions to the newsletter. The WashTech-News subscriber list is a private list whose membership will not be disclosed outside this organization. To subscribe by e-mail, send a message to majordomo@lists.speakeasy.org with the text SUBSCRIBE WashTech-News in the body of the message. You will receive e-mail confirming your subscription. To unsubscribe, send a message to majordomo@lists.speakeasy.org with the text UNSUBSCRIBE WashTech-News as the body of the message Copyright (c) 2000 WashTech All Rights Reserved ----------------------------------------------- Published by: WashTech 2366 Eastlake Ave E, #301 Seattle, WA 98102 U.S.A. (206) 726-8580 contact@washtech.org ----------------------------------------------- This publication may be freely copied or retransmitted provided it remains intact and without changes. Any unauthorized partial duplication will be considered a copyright infringement. ----- End forwarded message ----- *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES; 6/12: Int. Perl 6/15: Pat. Matching 8/14: UNIX 8/21: Shell | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From wildwood_players at yahoo.com Tue Jun 20 16:39:12 2000 From: wildwood_players at yahoo.com (Richard Wood) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Forcing a browser to refresh a file Message-ID: <20000620213912.27489.qmail@web108.yahoomail.com> Hi everyone, Hopefully I am sending this correctly, it is the first question I have sent. I believe this to be trivial (for someone), but I can't find the answer. I am building an XML file in a perl script. I then print location and content headers to direct the browser to the xml file. The problem is, the browser is picking up a cached version of the file. What can I do (from the server's perspective) to force the browser to refresh the file? I suspect it is something in the headers I send, like the date for the file. But I can't get anything to work (yet). Here are some bits and pieces from the code: my $redirect_string = "http://myhome.com/table.xml"; ($RT,$WT) = (stat("table.xml"))[8,9]; $tm = localtime($WT); $hdate = sprintf "%4d%02d%02dT%02d%02d%02dTZD",$tm->year+1900, $tm->mon+1, $tm->mday, $tm->hour, $tm->min, $tm->sec; print ("Location: $redirect_string\n"); print ("Date: $htmldate\n"); print ("Content-type: text/xml\n\n"); Regards, Rich Wood ===== Richard O. Wood Wildwood IT Consultants, Inc. wildwood_players@yahoo.com 206.605.2539 http://resumes.dice.com/richardowood __________________________________________________ Do You Yahoo!? Send instant messages with Yahoo! Messenger. http://im.yahoo.com/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From aderhaa at n2h2.com Tue Jun 20 17:12:21 2000 From: aderhaa at n2h2.com (Alan E. Derhaag) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Forcing a browser to refresh a file In-Reply-To: Richard Wood's message of "Tue, 20 Jun 2000 14:39:12 -0700 (PDT)" References: <20000620213912.27489.qmail@web108.yahoomail.com> Message-ID: Richard Wood writes: [...] > is picking up a cached version of the file. What can > I do (from the server's perspective) to force the > browser to refresh the file? I suspect it is > something in the headers I send, like the date for the > file. But I can't get anything to work (yet). > > Here are some bits and pieces from the code: > > > my $redirect_string = "http://myhome.com/table.xml"; > > ($RT,$WT) = (stat("table.xml"))[8,9]; > $tm = localtime($WT); > $hdate = sprintf > "%4d%02d%02dT%02d%02d%02dTZD",$tm->year+1900, > $tm->mon+1, $tm->mday, $tm->hour, $tm->min, $tm->sec; $tm->min += 30; # expires in 30 if ($tm->min > 60) { $tm->hour += 1; $tm->min %= 60; } $xdate = sprintf "%4d%02d%02dT%02d%02d%02dTZD",$tm->year+1900, $tm->mon+1, $tm->mday, $tm->hour, $tm->min, $tm->sec; > > print ("Location: $redirect_string\n"); > print ("Date: $htmldate\n"); print ("Expires: $xdate\n"); > print ("Content-type: text/xml\n\n"); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From wildwood_players at yahoo.com Wed Jun 21 10:36:49 2000 From: wildwood_players at yahoo.com (Richard Wood) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Forcing a browser to refresh a file Message-ID: <20000621153649.1336.qmail@web108.yahoomail.com> Thanks for the ideas, I was letting my uncertainty about what headers to send keep me from just sending the XML file to the browser in the message. I fooled with it briefly and got it working. All I had to do was print "Content-type: text/xml\n\n"; in front of the xml and it worked just fine! Thanks for the help! FYI, the application sends 500 rows of 6 columns of data to the browser. The user can then sort the data on any column. If they click on a cell, the row opens up for update. If they change data, the changes are submitted for update and then the data is returned with the next selected row opened for update. All of the sorting and opening of form fields are done with XSL. Pretty cool and all client side. Rich Wood --- Chris Sutton wrote: > Question: Why don't you just send the xml table > back from the perl > script instead of redirecting people to the file. I > have a feeling the > header information you are writing is getting > overridden by whatever the > webserver is saying about the file. > > Richard Wood wrote: > > > > Hi everyone, > > > > Hopefully I am sending this correctly, it is the > first > > question I have sent. > > > > I believe this to be trivial (for someone), but I > > can't find the answer. > > > > I am building an XML file in a perl script. I > then > > print location and content headers to direct the > > browser to the xml file. The problem is, the > browser > > is picking up a cached version of the file. What > can > > I do (from the server's perspective) to force the > > browser to refresh the file? I suspect it is > > something in the headers I send, like the date for > the > > file. But I can't get anything to work (yet). > > > > Here are some bits and pieces from the code: > > > > my $redirect_string = > "http://myhome.com/table.xml"; > > > > ($RT,$WT) = (stat("table.xml"))[8,9]; > > $tm = localtime($WT); > > $hdate = sprintf > > "%4d%02d%02dT%02d%02d%02dTZD",$tm->year+1900, > > $tm->mon+1, $tm->mday, $tm->hour, $tm->min, > $tm->sec; > > > > print ("Location: $redirect_string\n"); > > print ("Date: $htmldate\n"); > > print ("Content-type: text/xml\n\n"); > > > > Regards, > > > > Rich Wood > > > > ===== > > Richard O. Wood > > Wildwood IT Consultants, Inc. > > wildwood_players@yahoo.com > > 206.605.2539 > > http://resumes.dice.com/richardowood > > > > __________________________________________________ > > Do You Yahoo!? > > Send instant messages with Yahoo! Messenger. > > http://im.yahoo.com/ > > > > - - - - - - - - - - - - - - - - - - - - - - - - - > - - - - - - - - - - - - > > POST TO: spug-list@pm.org PROBLEMS: > owner-spug-list@pm.org > > Seattle Perl Users Group (SPUG) Home Page: > http://www.halcyon.com/spug/ > > For Subscriptions, Email to majordomo@pm.org: > ACTION spug-list EMAIL > > Replace ACTION by subscribe or unsubscribe, > EMAIL by your Email address ===== Richard O. Wood Wildwood IT Consultants, Inc. wildwood_players@yahoo.com 206.605.2539 http://resumes.dice.com/richardowood __________________________________________________ Do You Yahoo!? Send instant messages with Yahoo! Messenger. http://im.yahoo.com/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Wed Jun 21 12:58:22 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Recruiter Survey Message-ID: <20000621105822.A10700@timji.consultix.wa.com> SPUGedelics, SPUG has been approached by several recruiting agencies who want to offer us finder's fees for helping fill Perl programming positions. Due to my long and extremely distasteful experiences with this industry (see below for an account of a "Perl Porting on the Night Shift" position I took a few years back, which really turned out to be "Shell Programming on the Day Shift") I'm very reluctant to have SPUG enter into a relationship with any agency without very good recommendations about their past performance. So I'm asking those of you who have had contract programming placements through Seattle-area agencies, which are the good ones (didn't lie to you, gave you a fair share of your billing rate, kept their promises about benefit plans and future contracts, etc.) The idea is that we'll identify a few really top-notch agencies, that have clients who hire Perl programmers, and give them special access to our Email list, in exchange for revenues that we'll use for parties, speakers, field trips to the Experience Music Project, etc. -Tim *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES; 6/12: Int. Perl 6/15: Pat. Matching 8/14: UNIX 8/21: Shell | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* An Unpleasant Experience with a High-Tech Recruiter Tim Maher, 2/2/97 The Job was described in a Usenet newsgroup posting as "software porting, 2nd shift." The name of the Recruiter handling the account was given. Over a 5 day period, I sent the designated Recruiter several Emails & FAXes with Resume attached, and one voice mail, asking repeatedly to be considered for the position. I never received any response. I eventually got through to the Recruiter by phone, 6 days from posting date, and he told me he hadn't heard from me and that he couldn't find a copy of my resume. I FAX'd it to him on the spot. I asked the Recruiter the specific hours for this 2nd shift position, and he said "4pm - 12." I asked if he needed to check with the Client to be sure, and he said "No." I told him I preferred to work on a 1099 rather than W2 basis, and he said no problem, they could arrange that. I told the Recruiter I wanted $50-$60/hour, but due to the benefits of the 1099 arrangement, I'd accept a minimum of $45/hour. He said that sounded very high, and that he'd have to check with the Client for approval, but given my impressive resume, it might work out. (I later learned from the Client that not only was no "checking for approval" ever done, but in fact, no discussion of my exact fee ever occurred). With my permission, the Recruiter FAX'd my resume to the Client. He then called to tell me that the Client had approved the $45 rate, and had requested an interview. I talked to the Client (who turned out to be old acquaintance), and found that the job was not 2nd shift, there was no porting involved, and that the Client had never discussed my fee with the Recruiter. The only fee they had discussed was what the Client would pay the Recruiter, which was set at $60 from the start. (NOTE: 60/45 is 33% markup) I met with the Recruiter, and asked to see the contract they use for 1099 arrangements, but he said it was my responsibility to provide that. I expressed surprise, and asked if he was sure they could really work on the 1099 basis (wondering how they could obtain approval from their legal advisors on a case-by-case basis for contracts submitted by contractors). But he insisted they do it all the time, and I should just send him my own contract. I told the Recruiter that I had been offered the position, but that I was anticipating additional offers for other higher-paying positions in short order. I proposed to forget about the other offers and accept this position if I could get $50/hr, and I asked him to make the pitch to the Client. (NOTE: 60/50 is 20% markup) The Recruiter left a voice-mail message for me saying that he had asked the Client for my higher rate, and that "Client says he wants to split the difference, at $47.50/hr ". I was disappointed that the Client would "nickel and dime" me like this, and said I'd think about it. I called the Client, who said Recruiter had talked him into increasing his payment by $5 to $65/hr, which he was willing to do to make me happy, but that was as high as he could go. He denied ever offering to "split the difference", and was surprised to hear that the Recruiter was keeping half of the $5 increment for himself. (NOTE: 65/47.50 is 37% markup) I called the Recruiter, and told him the Client couldn't go any higher, and asked him to please reduce his markup to provide me the $50/hr I needed to commit to the deal. After a very long silence, and then lengthy consideration of my answer to the question "When can you start?", he reluctantly agreed. (NOTE: 65/50 is 30% markup) COMMENTS: My background, as detailed on my resume, made it clear that I was a shoo-in for this position! Yet if I hadn't persisted in trying to get this Recruiter to read his Email or FAXes for a period of nearly a week, I doubt that I would ever have had a chance for the interview! This is surely not indicative of an active, organized, professional campaign fill the position! Furthermore, in addition to this apparent lack of competence or diligence, if I assume that the Client has been truthful with me, which I have no reason to doubt, I must conclude that almost everything the Recruiter told me was either factually incorrect or deliberately falsified. He had even gone so far as to fabricate fictitious conversations he'd supposedly had with the Client, with the obvious intent of diminishing my share of Client's payments through deceit. Although this is the only Recruiter, and the only search agency, with which I have had this much interaction in this decade, in retrospect I now suspect that all the others I talked to during this 3 week job-hunting period (at least seven) were playing the same games as this guy (e.g., pretending to forcefully lobby the Client on my behalf to get me a higher rate, when in fact they probably never even made a phone call; ). Moreover, I now regret excluding from my consideration many job announcements that contained one or two words that put me off; judging from my recent experience, I now suspect that many of those descriptions were probably extremely inaccurate, and I may in fact have liked the real job descriptions, as opposed to the ones posted by the Search Agencies, very much! What an industry! I'd much rather have my sister marry a used car salesman! I'm wondering what comes next, now that I'm at the paper-signing phase with this totally unethical and borderline-incompetent bozo of a Recruiter. I have a sinking feeling that he is going to suddenly discover that he cannot pay me on a 1099 basis after all, and try to (bait and) switch me over to W2. (Of course, as I told him on Day One, I would have wanted $50-$60 for a W2 job, and was only willing to go lower for the benefits of the 1099 status.) We shall see . . . Epilogue: Everything worked out okay. The last time I was in their office, I overheard a conversation in which the big-boss was telling my agent that they had to find a way to "turn resumes around faster", because most placements went to the agency that would submit the resume first to the client. He told my agent to stop reading the incoming resumes, just to FAX them ASAP to all the clients with open postions. I'm not kidding! I sure hope this agency is either out of business by now, or behaving more responsibly. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Wed Jun 21 15:23:03 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Recruiter Survey In-Reply-To: <1213156C8729D411A41B009027DCDB0C374B2D@EXCHANGER.CACHEFLOW.COM>; from dale.hauer@cacheflow.com on Wed, Jun 21, 2000 at 01:05:56PM -0700 References: <1213156C8729D411A41B009027DCDB0C374B2D@EXCHANGER.CACHEFLOW.COM> Message-ID: <20000621132303.C11612@timji.consultix.wa.com> SPUGomaniacs, Some people are getting the impression that I'm talking about selling the SPUG email-list to headhunters. DON'T PANIC! I had nothing of the sort in mind. By offering them "special access to our Email list", I was thinking that we might loosen the usual requirements for postings that currently scare away most headhunting agencies. Specifically, recruiters are required to disclose the hourly rate they're willing to pay the contractor; many refuse to do this, and get their submissions squelched (by me) on this basis. (Such disclosure makes it harder for them to play "both ends against the middle" and jack up their bill-rate while reducing their pay-rate, to the detriment of both the contractor and the client. If they want to play these games, they can do so without the help of SPUG, IMHO.) There's at least one agency out there that guarantees 82% of their bill-rate to the contractor, so for them, for example, it might be reasonable to waive this hourly-rate disclosure. But only if they're an agency with a good reputation, which is why I'm asking for feedback on which agencies are considered ethical and good. I don't own the SPUG email-list, and don't feel entitled to sell it or use it in any unusual way without the permission of those on it. Trust me! ========================================================== | Tim Maher, Ph.D. Tel/Fax: (206) 781-UNIX | | SPUG Founder & Leader Email: spug@halcyon.com | | Seattle Perl Users Group HTTP: www.halcyon.com/spug | ========================================================== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From starfire at zipcon.net Wed Jun 21 15:30:02 2000 From: starfire at zipcon.net (Richard Anderson) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Re: Recruiter Survey References: <20000621105822.A10700@timji.consultix.wa.com> Message-ID: <000801bfdbbf$7e2ae4c0$3488ddd1@adcom133> Isn't this going to threaten our non-profit status? Has anyone checked with PerlMongers (who is providing our mail list server) about whether this is legit or if they have to get a piece of the action? I feel uncomfortable with this idea. For what it's worth, here is my contractor agency "whitelist". I also have a blacklist, which I don't feel is appropriate to make public. I suspect that NONE of the firms that have approached Tim are on this list, as these firms are well-established and don't need to solicit user groups. In general, I recommend staying away from any firm that calls itself a "consulting" agency. Consulting firms have higher overhead so their contractor rates are lower than contract firms and consulting firm's benefits are inferior to those offered by contract firms. If a firm does not have a 401K or has a initial qualification period of more than one month before you can contribute to the 401K plan, this will cost you about $5 / hour. Recommended contract firms: ACS 425.462.0085 401K enroll on the first of any month AIC Good rates, preferred firm for Boeing or U.S. West contracts ConsultNet Very professional, 401K Staffing Options and Solutions 425.774.7671 immediate 401K, paid holidays, paid vacation, completion bonus, full medical coverage Volt immediate 401K, paid holidays, paid vacation; preferred firm for Microsoft contracts Watson Group (425.806.8343) immediate 401K, discloses bill rate (70-30 split) The horror story that Tim posted (below) doesn't sound nearly as bad as some I've heard. When working with contract firms I recommend setting clear boundaries about what you are and are not willing to do. Here's my list: 1. Q: What is your status? A: I am currently able to accept a contract offer. 2. Q: Are you working? A: I prefer not to discuss my current situation. I am currently able to accept a contract offer, and I can report to work one week after getting a written contract offer. 3. Q: Do you have any pending opportunities, interviews or offers? A: I prefer not to discuss this. I am always willing to consider multiple opportunities. 4. Q: When are you available? A: I can report to work within one week of getting a written contract offer that is acceptable to both parties. 5. Q: Will you relocate? A: No. 6. Q: How many years of experience do you have in ____? A: Please see my resume for this information. 7. Q: What is your rate? A: This depends on the location, the client, the type of work, number of billable hours per week, pay rate for overtime, availability of a 401K plan, length of the qualifying period for the 401K plan and whether there are any paid holidays or vacation days. If you can provide me with this information, I can quote you a rate. 8. Q: Can you meet with me to discuss this contract? A: I am not able to meet on-site with contract firm agents until I have interviewed with the client and there is a written offer. If a face-to-face meeting is necessary, I would be happy to meet you for lunch near my office. 9. Q: Will you accept an offer for full-time ("permanent") employment? A: No. However, if I receive a good offer from a client that I have a current or former contract with, I will give it careful consideration. 10. Q: Can you provide references? A: Not initially. I can provide references after the client and I have done an interview and expressed a mutual interest. 11. Q: Can you fill out a form or written questionnaire? A: No. 12. Q: What were the lengths and terms (W-2, 1099) of your previous contracts? A: I prefer not to discuss this. My contract agreements with my clients are confidential. 13. Q: Will you consider contract-to-perm? A: No. Richard.Anderson@unixscripts.com www.zipcon.net/~starfire/home (personal) www.unixscripts.com (corporate) ----- Original Message ----- From: "Tim Maher/CONSULTIX" To: Sent: Wednesday, June 21, 2000 10:58 AM Subject: SPUG: Recruiter Survey > SPUGedelics, > > SPUG has been approached by several recruiting agencies who want to > offer us finder's fees for helping fill Perl programming positions. > > Due to my long and extremely distasteful experiences with this industry > (see below for an account of a "Perl Porting on the Night Shift" > position I took a few years back, which really turned out to be "Shell > Programming on the Day Shift") I'm very reluctant to have SPUG enter into > a relationship with any agency without very good recommendations about > their past performance. > > So I'm asking those of you who have had contract programming placements > through Seattle-area agencies, which are the good ones (didn't lie to > you, gave you a fair share of your billing rate, kept their promises > about benefit plans and future contracts, etc.) > > The idea is that we'll identify a few really top-notch agencies, that > have clients who hire Perl programmers, and give them special access to > our Email list, in exchange for revenues that we'll use for parties, > speakers, field trips to the Experience Music Project, etc. > > -Tim > *========================================================================* > | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | > | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | > | CLASSES; 6/12: Int. Perl 6/15: Pat. Matching 8/14: UNIX 8/21: Shell | > | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | > *========================================================================* > An Unpleasant Experience with a High-Tech Recruiter > > Tim Maher, 2/2/97 > > The Job was described in a Usenet newsgroup posting as "software porting, > 2nd shift." The name of the Recruiter handling the account was given. > > Over a 5 day period, I sent the designated Recruiter several Emails > & FAXes with Resume attached, and one voice mail, asking repeatedly > to be considered for the position. I never received any response. > I eventually got through to the Recruiter by phone, 6 days from posting > date, and he told me he hadn't heard from me and that he couldn't find > a copy of my resume. I FAX'd it to him on the spot. > > I asked the Recruiter the specific hours for this 2nd shift position, > and he said "4pm - 12." I asked if he needed to check with the Client > to be sure, and he said "No." > > I told him I preferred to work on a 1099 rather than W2 basis, and he > said no problem, they could arrange that. > > I told the Recruiter I wanted $50-$60/hour, but due to the benefits > of the 1099 arrangement, I'd accept a minimum of $45/hour. He said > that sounded very high, and that he'd have to check with the Client for > approval, but given my impressive resume, it might work out. (I later > learned from the Client that not only was no "checking for approval" > ever done, but in fact, no discussion of my exact fee ever occurred). > > With my permission, the Recruiter FAX'd my resume to the Client. > He then called to tell me that the Client had approved the $45 rate, > and had requested an interview. > > I talked to the Client (who turned out to be old acquaintance), and found > that the job was not 2nd shift, there was no porting involved, and that > the Client had never discussed my fee with the Recruiter. The only > fee they had discussed was what the Client would pay the Recruiter, > which was set at $60 from the start. (NOTE: 60/45 is 33% markup) > > I met with the Recruiter, and asked to see the contract they use for > 1099 arrangements, but he said it was my responsibility to provide that. > I expressed surprise, and asked if he was sure they could really work on > the 1099 basis (wondering how they could obtain approval from their legal > advisors on a case-by-case basis for contracts submitted by contractors). > But he insisted they do it all the time, and I should just send him my > own contract. > > I told the Recruiter that I had been offered the position, but that I > was anticipating additional offers for other higher-paying positions > in short order. I proposed to forget about the other offers and accept > this position if I could get $50/hr, and I asked him to make the pitch > to the Client. (NOTE: 60/50 is 20% markup) > > The Recruiter left a voice-mail message for me saying that he had asked > the Client for my higher rate, and that "Client says he wants to split > the difference, at $47.50/hr ". I was disappointed that the Client would > "nickel and dime" me like this, and said I'd think about it. > > I called the Client, who said Recruiter had talked him into increasing > his payment by $5 to $65/hr, which he was willing to do to make me happy, > but that was as high as he could go. He denied ever offering to "split > the difference", and was surprised to hear that the Recruiter was keeping > half of the $5 increment for himself. (NOTE: 65/47.50 is 37% markup) > > I called the Recruiter, and told him the Client couldn't go any higher, > and asked him to please reduce his markup to provide me the $50/hr > I needed to commit to the deal. After a very long silence, and then > lengthy consideration of my answer to the question "When can you start?", > he reluctantly agreed. (NOTE: 65/50 is 30% markup) > > COMMENTS: > > My background, as detailed on my resume, made it clear that I was a > shoo-in for this position! Yet if I hadn't persisted in trying to get > this Recruiter to read his Email or FAXes for a period of nearly a week, > I doubt that I would ever have had a chance for the interview! This is > surely not indicative of an active, organized, professional campaign > fill the position! > > Furthermore, in addition to this apparent lack of competence or diligence, > if I assume that the Client has been truthful with me, which I have no > reason to doubt, I must conclude that almost everything the Recruiter > told me was either factually incorrect or deliberately falsified. > > He had even gone so far as to fabricate fictitious conversations he'd > supposedly had with the Client, with the obvious intent of diminishing > my share of Client's payments through deceit. > > Although this is the only Recruiter, and the only search agency, with > which I have had this much interaction in this decade, in retrospect I now > suspect that all the others I talked to during this 3 week job-hunting > period (at least seven) were playing the same games as this guy (e.g., > pretending to forcefully lobby the Client on my behalf to get me a higher > rate, when in fact they probably never even made a phone call; ). > > Moreover, I now regret excluding from my consideration many job > announcements that contained one or two words that put me off; judging > from my recent experience, I now suspect that many of those descriptions > were probably extremely inaccurate, and I may in fact have liked the real > job descriptions, as opposed to the ones posted by the Search Agencies, > very much! > > What an industry! I'd much rather have my sister marry a used car > salesman! > > I'm wondering what comes next, now that I'm at the paper-signing > phase with this totally unethical and borderline-incompetent bozo of > a Recruiter. I have a sinking feeling that he is going to suddenly > discover that he cannot pay me on a 1099 basis after all, and try to > (bait and) switch me over to W2. (Of course, as I told him on Day One, > I would have wanted $50-$60 for a W2 job, and was only willing to go > lower for the benefits of the 1099 status.) We shall see . . . > > Epilogue: > Everything worked out okay. The last time I was in their office, I > overheard a conversation in which the big-boss was telling my agent > that they had to find a way to "turn resumes around faster", because > most placements went to the agency that would submit the resume first > to the client. He told my agent to stop reading the incoming resumes, > just to FAX them ASAP to all the clients with open postions. I'm not > kidding! I sure hope this agency is either out of business by now, > or behaving more responsibly. > > > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Wed Jun 21 15:56:21 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Re: Recruiter Survey In-Reply-To: <000801bfdbbf$7e2ae4c0$3488ddd1@adcom133>; from starfire@zipcon.net on Wed, Jun 21, 2000 at 01:30:02PM -0700 References: <20000621105822.A10700@timji.consultix.wa.com> <000801bfdbbf$7e2ae4c0$3488ddd1@adcom133> Message-ID: <20000621135621.A11803@timji.consultix.wa.com> On Wed, Jun 21, 2000 at 01:30:02PM -0700, Richard Anderson wrote: > Isn't this going to threaten our non-profit status? Has anyone checked with > PerlMongers (who is providing our mail list server) about whether this is > legit or if they have to get a piece of the action? I feel uncomfortable > with this idea. Although we are affiliated with the Perl Mongers, we wouldn't need their permission to change the way we operate our group, and we could certainly change our list-service at any time. I'm not saying we should or would, just that we could! 8-} SPUG is not registered as a non-profit organization, and therefore doesn't need to worry about losing that privileged tax status. In fact, because SPUG doesn't have any revenues or assets, or legal existence for that matter, we aren't liable for taxes. Of course, if revenues were to appear, all this would change. Headhunters routinely pay finder's fees of $500-$1k for each placement; instead of giving away contact with SPUGsters for free, we might want to consider taking the opportunity to reap some of those benefits. I must say that I'm not very favorably disposed to the idea of changing anything about the way we currently operate, since dong so would undoubtedly increase the complexity of my job enormously, but I felt an obligation to run this idea by the group, since I'm getting so much heat from headhunters these days. > > For what it's worth, here is my contractor agency "whitelist". I also have > a blacklist, which I don't feel is appropriate to make public. I suspect > that NONE of the firms that have approached Tim are on this list, as these > firms are well-established and don't need to solicit user groups. Thanks very much for sharing this with us. As you guessed, *none* of the headhunters currently trying to bribe me to divulge our list is on your list! I'm curious as to how rigid you are with the scripted "Answers" shown to your Q/A material; if you really answer the way the script indicates, I'm surprised that you can get placed! Or perhaps I should be surprised that I've been so compliant in headhunter interviews myself, when apparently I could have stonewalled on all the questions and still gotten the gig! 8-} Does your resume disclose the previous contracts, that you refuse to comment about in the interview? If not, what does the recruiter have to go on? The mind boggles . . . ========================================================== | Tim Maher, Ph.D. Tel/Fax: (206) 781-UNIX | | SPUG Founder & Leader Email: spug@halcyon.com | | Seattle Perl Users Group HTTP: www.halcyon.com/spug | ========================================================== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From byoung at speakeasy.org Wed Jun 21 16:00:46 2000 From: byoung at speakeasy.org (Bradley E. Young) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Recruiter Survey In-Reply-To: <20000621105822.A10700@timji.consultix.wa.com> Message-ID: Tim, You really should have named names in the story, so we can all avoid that company. I've worked with a couple of agencies; Maxim and Reniassance, but neither of them is full disclosure, which is critical. Other than that, I liked working with them. On the other hand, I read about White Hammond consulting the other day, they are full disclosure, and pay 82% of the bill rate. They focus on web dev stuff (anybody *not* doing web stuff these days?). No affiliation, etc. Brad -----Original Message----- From: owner-spug-list@pm.org [mailto:owner-spug-list@pm.org]On Behalf Of Tim Maher/CONSULTIX Sent: Wednesday, June 21, 2000 10:58 To: spug-list@pm.org Subject: SPUG: Recruiter Survey SPUGedelics, SPUG has been approached by several recruiting agencies who want to offer us finder's fees for helping fill Perl programming positions. Due to my long and extremely distasteful experiences with this industry (see below for an account of a "Perl Porting on the Night Shift" position I took a few years back, which really turned out to be "Shell Programming on the Day Shift") I'm very reluctant to have SPUG enter into a relationship with any agency without very good recommendations about their past performance. So I'm asking those of you who have had contract programming placements through Seattle-area agencies, which are the good ones (didn't lie to you, gave you a fair share of your billing rate, kept their promises about benefit plans and future contracts, etc.) The idea is that we'll identify a few really top-notch agencies, that have clients who hire Perl programmers, and give them special access to our Email list, in exchange for revenues that we'll use for parties, speakers, field trips to the Experience Music Project, etc. -Tim *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES; 6/12: Int. Perl 6/15: Pat. Matching 8/14: UNIX 8/21: Shell | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* An Unpleasant Experience with a High-Tech Recruiter Tim Maher, 2/2/97 The Job was described in a Usenet newsgroup posting as "software porting, 2nd shift." The name of the Recruiter handling the account was given. Over a 5 day period, I sent the designated Recruiter several Emails & FAXes with Resume attached, and one voice mail, asking repeatedly to be considered for the position. I never received any response. I eventually got through to the Recruiter by phone, 6 days from posting date, and he told me he hadn't heard from me and that he couldn't find a copy of my resume. I FAX'd it to him on the spot. I asked the Recruiter the specific hours for this 2nd shift position, and he said "4pm - 12." I asked if he needed to check with the Client to be sure, and he said "No." I told him I preferred to work on a 1099 rather than W2 basis, and he said no problem, they could arrange that. I told the Recruiter I wanted $50-$60/hour, but due to the benefits of the 1099 arrangement, I'd accept a minimum of $45/hour. He said that sounded very high, and that he'd have to check with the Client for approval, but given my impressive resume, it might work out. (I later learned from the Client that not only was no "checking for approval" ever done, but in fact, no discussion of my exact fee ever occurred). With my permission, the Recruiter FAX'd my resume to the Client. He then called to tell me that the Client had approved the $45 rate, and had requested an interview. I talked to the Client (who turned out to be old acquaintance), and found that the job was not 2nd shift, there was no porting involved, and that the Client had never discussed my fee with the Recruiter. The only fee they had discussed was what the Client would pay the Recruiter, which was set at $60 from the start. (NOTE: 60/45 is 33% markup) I met with the Recruiter, and asked to see the contract they use for 1099 arrangements, but he said it was my responsibility to provide that. I expressed surprise, and asked if he was sure they could really work on the 1099 basis (wondering how they could obtain approval from their legal advisors on a case-by-case basis for contracts submitted by contractors). But he insisted they do it all the time, and I should just send him my own contract. I told the Recruiter that I had been offered the position, but that I was anticipating additional offers for other higher-paying positions in short order. I proposed to forget about the other offers and accept this position if I could get $50/hr, and I asked him to make the pitch to the Client. (NOTE: 60/50 is 20% markup) The Recruiter left a voice-mail message for me saying that he had asked the Client for my higher rate, and that "Client says he wants to split the difference, at $47.50/hr ". I was disappointed that the Client would "nickel and dime" me like this, and said I'd think about it. I called the Client, who said Recruiter had talked him into increasing his payment by $5 to $65/hr, which he was willing to do to make me happy, but that was as high as he could go. He denied ever offering to "split the difference", and was surprised to hear that the Recruiter was keeping half of the $5 increment for himself. (NOTE: 65/47.50 is 37% markup) I called the Recruiter, and told him the Client couldn't go any higher, and asked him to please reduce his markup to provide me the $50/hr I needed to commit to the deal. After a very long silence, and then lengthy consideration of my answer to the question "When can you start?", he reluctantly agreed. (NOTE: 65/50 is 30% markup) COMMENTS: My background, as detailed on my resume, made it clear that I was a shoo-in for this position! Yet if I hadn't persisted in trying to get this Recruiter to read his Email or FAXes for a period of nearly a week, I doubt that I would ever have had a chance for the interview! This is surely not indicative of an active, organized, professional campaign fill the position! Furthermore, in addition to this apparent lack of competence or diligence, if I assume that the Client has been truthful with me, which I have no reason to doubt, I must conclude that almost everything the Recruiter told me was either factually incorrect or deliberately falsified. He had even gone so far as to fabricate fictitious conversations he'd supposedly had with the Client, with the obvious intent of diminishing my share of Client's payments through deceit. Although this is the only Recruiter, and the only search agency, with which I have had this much interaction in this decade, in retrospect I now suspect that all the others I talked to during this 3 week job-hunting period (at least seven) were playing the same games as this guy (e.g., pretending to forcefully lobby the Client on my behalf to get me a higher rate, when in fact they probably never even made a phone call; ). Moreover, I now regret excluding from my consideration many job announcements that contained one or two words that put me off; judging from my recent experience, I now suspect that many of those descriptions were probably extremely inaccurate, and I may in fact have liked the real job descriptions, as opposed to the ones posted by the Search Agencies, very much! What an industry! I'd much rather have my sister marry a used car salesman! I'm wondering what comes next, now that I'm at the paper-signing phase with this totally unethical and borderline-incompetent bozo of a Recruiter. I have a sinking feeling that he is going to suddenly discover that he cannot pay me on a 1099 basis after all, and try to (bait and) switch me over to W2. (Of course, as I told him on Day One, I would have wanted $50-$60 for a W2 job, and was only willing to go lower for the benefits of the 1099 status.) We shall see . . . Epilogue: Everything worked out okay. The last time I was in their office, I overheard a conversation in which the big-boss was telling my agent that they had to find a way to "turn resumes around faster", because most placements went to the agency that would submit the resume first to the client. He told my agent to stop reading the incoming resumes, just to FAX them ASAP to all the clients with open postions. I'm not kidding! I sure hope this agency is either out of business by now, or behaving more responsibly. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From davidpa at lucent.com Wed Jun 21 16:45:31 2000 From: davidpa at lucent.com (Patterson, David S (David)) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Recruiter Survey Message-ID: I've contracted for over 8 years all over the country. It is *rare* to find an contract agency that is willing to provide a salary or hourly rate that is in any way tied to the agencies' billing rate to the client. This rate is almost always confidential. However, there have been a few exceptions. The game goes like this: The agency publishes a Job Title/Skills List/Years of Experience sheet and gets the client company to agree on a bill rate for each Title/Skill category. Then the agency goes out and recruits the cheapest labor it possibly can, and inflates as much as it can the Job Title/Skills List of the new hire. In many cases people were recruited grad school or from overseas and were paid $10 - $20 an hour for software developer or tester positions. So imagine the frustration of company managers who were paying $150 - $250 an hour for unhappy, grumbling contractors barely able to keep a roof over their heads. Some of the larger client companies who use a lot of contract help (e.g. IBM, Boeing) caught on to the game the agencies were playing by the mid 90's and modified their vendor contracts to mandate the percent cut the agencies were allowed to take. But the bottom line is: If you think the price is right, then take the contract. Otherwise, pass it by. That's how the marketplace works when you're selling your labor. If you want to change this equation, you have to sell more than just your labor. You basically have to go into business for yourself. If you have the time and willpower, great. If not, there's nothing wrong with a standard W-2 contract. > --- "To do great important tasks, two things are necessary, a plan and not enough time..." > David Patterson > Software Engineer > Lucent Technologies * > 6464 185th Ave NE > Redmond, WA 98052-6736 > 425-558-8008 x 2172 > 888-501-4835 Pgr > davidpa@lucent.com > > -----Original Message----- > From: Tim Maher/CONSULTIX [SMTP:tim@consultix-inc.com] > Sent: Wednesday, June 21, 2000 1:23 PM > To: spug-list@pm.org > Subject: Re: SPUG: Recruiter Survey > > SPUGomaniacs, > > Some people are getting the impression that I'm talking about selling > the SPUG email-list to headhunters. DON'T PANIC! I had nothing of the > sort in mind. > > By offering them "special access to our Email list", I was thinking that > we might loosen the usual requirements for postings that currently scare > away most headhunting agencies. Specifically, recruiters are required > to disclose the hourly rate they're willing to pay the contractor; > many refuse to do this, and get their submissions squelched (by me) > on this basis. (Such disclosure makes it harder for them to play "both > ends against the middle" and jack up their bill-rate while reducing their > pay-rate, to the detriment of both the contractor and the client. If they > want to play these games, they can do so without the help of SPUG, IMHO.) > > There's at least one agency out there that guarantees 82% of their > bill-rate to the contractor, so for them, for example, it might be > reasonable to waive this hourly-rate disclosure. But only if they're > an agency with a good reputation, which is why I'm asking for feedback > on which agencies are considered ethical and good. > > I don't own the SPUG email-list, and don't feel entitled to sell it or use > it in any unusual way without the permission of those on it. Trust me! > > ========================================================== > | Tim Maher, Ph.D. Tel/Fax: (206) 781-UNIX | > | SPUG Founder & Leader Email: spug@halcyon.com | > | Seattle Perl Users Group HTTP: www.halcyon.com/spug | > ========================================================== > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From starfire at zipcon.net Wed Jun 21 17:29:45 2000 From: starfire at zipcon.net (Richard Anderson) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Re: Re: Recruiter Survey References: <20000621105822.A10700@timji.consultix.wa.com> <000801bfdbbf$7e2ae4c0$3488ddd1@adcom133> <20000621135621.A11803@timji.consultix.wa.com> Message-ID: <002e01bfdbd0$35283050$3488ddd1@adcom133> Answers embedded below ... Richard.Anderson@unixscripts.com www.zipcon.net/~starfire/home (personal) www.unixscripts.com (corporate) ----- Original Message ----- From: "Tim Maher/CONSULTIX" To: Sent: Wednesday, June 21, 2000 1:56 PM Subject: SPUG: Re: Recruiter Survey > I'm curious as to how rigid you are with the scripted "Answers" shown to > your Q/A material; if you really answer the way the script indicates, I'm > surprised that you can get placed! Or perhaps I should be surprised that > I've been so compliant in headhunter interviews myself, when apparently I > could have stonewalled on all the questions and still gotten the gig! 8-} > I vary the wording of the responses, but not the intent. When I began developing this Q/A list I occaissionally bent the rules and was usually sorry I did. I generally find that about 10-20% of contract firms will refuse to work with me on my terms. This fine with me, since I have generally found about one third of all contract firms are not worth working with. All it takes to set up a contract firm is a phone and some stationary, so there is a constant influx of idiots into the business. I've been contracting for seven years, and my techniques have worked for me. I am not saying that other approaches won't work either, it's a matter of personal preference. > Does your resume disclose the previous contracts, that you refuse to > comment about in the interview? If not, what does the recruiter have > to go on? The mind boggles . . . > I don't think you read the Q/A carefully. For the record the Q/A you refer to was: 12. Q: What were the lengths and terms (W-2, 1099) of your previous contracts? A: I prefer not to discuss this. My contract agreements with my clients are confidential. The exact months and terms of my previous contracts are not all that relevant to whether I am qualified for the contract under consideration, and many contracts DO have a non-disclosure clause. Giving this kind of info to the recruiter gives away bargaining information for free and can lead to stupid questions like: " I see that you were not working between August and October of 1997. What were you doing then?" Obviously, the resume I send to recruiters has explicit details about where I worked, the years (not months) of the assignments, the projects I worked on and the technologies I used. By refusing to let the recruiter waste your time, you are accomplishing two things: you are avoiding wasting your time and you are screening out the ineffective recruiters who have time to waste on irrelevant questions. The recruiters you want to work with are the experienced ones that don't waste their time on irrelevant questions. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From starfire at zipcon.net Wed Jun 21 17:47:06 2000 From: starfire at zipcon.net (Richard Anderson) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Recruiter Survey References: Message-ID: <003b01bfdbd2$a22bae50$3488ddd1@adcom133> I second David's comment that "If you think the price is right, then take the contract." I've never been concerned about what the contract firm is billing the client, as long as I am getting a market rate. Since I refuse to give the contract agency irrelevant information, I don't demand that they reveal information that doesn't affect me, like the client bill rate or what they had for breakfast. For a good compilation of anonymously-contributed rates, see www.realrates.com . Richard.Anderson@unixscripts.com www.zipcon.net/~starfire/home (personal) www.unixscripts.com (corporate) ----- Original Message ----- From: "Patterson, David S (David)" To: Sent: Wednesday, June 21, 2000 2:45 PM Subject: RE: SPUG: Recruiter Survey > I've contracted for over 8 years all over the country. It is *rare* to find > an contract agency that is willing to provide a salary or hourly rate that > is in any way tied to the agencies' billing rate to the client. This rate > is almost always confidential. However, there have been a few exceptions. > > The game goes like this: The agency publishes a Job Title/Skills List/Years > of Experience sheet and gets the client company to agree on a bill rate for > each Title/Skill category. Then the agency goes out and recruits the > cheapest labor it possibly can, and inflates as much as it can the Job > Title/Skills List of the new hire. In many cases people were recruited grad > school or from overseas and were paid $10 - $20 an hour for software > developer or tester positions. So imagine the frustration of company > managers who were paying $150 - $250 an hour for unhappy, grumbling > contractors barely able to keep a roof over their heads. > > Some of the larger client companies who use a lot of contract help (e.g. > IBM, Boeing) caught on to the game the agencies were playing by the mid > 90's and modified their vendor contracts to mandate the percent cut the > agencies were allowed to take. > > But the bottom line is: If you think the price is right, then take the > contract. Otherwise, pass it by. That's how the marketplace works when > you're selling your labor. If you want to change this equation, you have to > sell more than just your labor. You basically have to go into business for > yourself. If you have the time and willpower, great. If not, there's > nothing wrong with a standard W-2 contract. > > > --- > "To do great important tasks, two things are necessary, a > plan and not enough time..." > > > David Patterson > > Software Engineer > > Lucent Technologies * > > 6464 185th Ave NE > > Redmond, WA 98052-6736 > > 425-558-8008 x 2172 > > 888-501-4835 Pgr > > davidpa@lucent.com > > > > -----Original Message----- > > From: Tim Maher/CONSULTIX [SMTP:tim@consultix-inc.com] > > Sent: Wednesday, June 21, 2000 1:23 PM > > To: spug-list@pm.org > > Subject: Re: SPUG: Recruiter Survey > > > > SPUGomaniacs, > > > > Some people are getting the impression that I'm talking about selling > > the SPUG email-list to headhunters. DON'T PANIC! I had nothing of the > > sort in mind. > > > > By offering them "special access to our Email list", I was thinking that > > we might loosen the usual requirements for postings that currently scare > > away most headhunting agencies. Specifically, recruiters are required > > to disclose the hourly rate they're willing to pay the contractor; > > many refuse to do this, and get their submissions squelched (by me) > > on this basis. (Such disclosure makes it harder for them to play "both > > ends against the middle" and jack up their bill-rate while reducing their > > pay-rate, to the detriment of both the contractor and the client. If they > > want to play these games, they can do so without the help of SPUG, IMHO.) > > > > There's at least one agency out there that guarantees 82% of their > > bill-rate to the contractor, so for them, for example, it might be > > reasonable to waive this hourly-rate disclosure. But only if they're > > an agency with a good reputation, which is why I'm asking for feedback > > on which agencies are considered ethical and good. > > > > I don't own the SPUG email-list, and don't feel entitled to sell it or use > > it in any unusual way without the permission of those on it. Trust me! > > > > ========================================================== > > | Tim Maher, Ph.D. Tel/Fax: (206) 781-UNIX | > > | SPUG Founder & Leader Email: spug@halcyon.com | > > | Seattle Perl Users Group HTTP: www.halcyon.com/spug | > > ========================================================== > > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From jason at strangelight.com Wed Jun 21 18:45:48 2000 From: jason at strangelight.com (Jason Lamport) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Greeetings, & wanting a little advice... In-Reply-To: <20000621105822.A10700@timji.consultix.wa.com> References: <20000621105822.A10700@timji.consultix.wa.com> Message-ID: Hello SPUGsters, I've been lurking on this list for a while now, and I thought it time to introduce myself: My name's Jason, I've been programming computers since I was 8 (and yes, I started with BASIC, but I turned into a damn good programmer anyway, despite what Dijkstra says... ;) I've been programming with Perl for about 3 years now: mostly CGI and CGI/database applications. I don't think I have any particularly unusual talents when it comes to programming, except that I'm probably the northwest's foremost authority on Reinventing the Wheel :) When I'm not writing code, I'm usually occupied with dancing (I mean professionally: with a dance company), writing plays, backpacking in the wilderness, creating Art, and other Bad Habits. Anyone who's curious can find out a *little* more about me at http://www.strangelight.com/ (though some of it's out of date). Now, I have a (possibly strange, perhaps even tactless) question to ask of you all: What is the going rate for Perl programmers (and/or HTML designers/ JavaScript programmers) these days? You see, up until now, all of my jobs and assignments have been for non-profits and other legitimately low-paying clients/employers, so I have absolutely no clue what's standard in the corporate, for-profit world. I mean, I know I'm being underpaid right now, but I have no idea just *how* underpaid. I've recently begun interviewing for various positions in the corporate world, and I've come to suspect that I'm botching the interviews by making my salary requirements way too low, making the interviewers assume that I must really not know what I'm doing. (Which is true: I *don't* know what I'm doing, when it comes to salary negotiations -- but they're not hiring me to negotiate salaries, they're hiring me to write code, which is something I *do* know how to do...) I've looked at some of those on-line salary surveys, but they're always organized by job titles, not job-descriptions, and the job titles are so hopelessly vague that I have no idea which job titles really fits what I do. And there are so many other factors: like the fact that I *don't* have a CS degree -- my qualifications are almost all from work experience, not schooling -- which I assume lowers my earning potential a few notches. I also assume that it makes a big difference exactly what sort of project I'm working on: I'd expect to get paid more per hour for setting up a complex, database-driven e-commerce site than for setting up a simple form-to-email script. Anyway, any advice on setting fees for clients and/or salary requirements for prospective employers would be greatly appreciated. (If you don't think this discussion belongs on the SPUG list, just email me privy.) Thanks! And happy coding. -jason - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From axhard2 at uswest.com Thu Jun 22 00:00:42 2000 From: axhard2 at uswest.com (Alyssa Harding) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: yapc::19100 Message-ID: <39507619.EC0333EE@uswest.com> Is anybody else from the Seattle area in Pittsburg this week? A. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From snickels at u.washington.edu Thu Jun 22 02:30:00 2000 From: snickels at u.washington.edu (Stephen Nickels) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: File uploading.... Message-ID: Does anyone know how to send a file upload via http (ala Message-ID: <8iwvjhqvw6.fsf@broca.biostr.washington.edu> Stephen Nickels, in an immanent manifestation of deity, wrote: >Does anyone know how to send a file upload via http (ala using LWP? I can't find anything about it in the LWP or HTTP::Request >documentation. Hmm. I've never needed to go that way. You could look at CGI.pm at CREATING A FILE UPLOAD FIELD and do the reverse. Darren -- Darren Stalder/2608 Second Ave, @282/Seattle, WA 98121-1212/USA/+1-206-ELF-LIPZ @ Sysadmin, webweaver, postmaster for hire. C/Perl/CGI/Pilot programmer/tutor @ @ Make a little hot-tub in your soul. @ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From jsouza at cobaltgroup.com Thu Jun 22 16:07:15 2000 From: jsouza at cobaltgroup.com (Jonathan Souza) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: Greeetings, & wanting a little advice... References: <20000621105822.A10700@timji.consultix.wa.com> Message-ID: <39528003.DED31D7B@cobaltgroup.com> Western CS graduates averaged 46K starting last year. The school does surveys of its graduating class, I do not think any kind of options or other benefits is including in that sum. I am also interested in what is a decent average of the going rate for a developer in general (not just Perl), because you quickly become language independent once you have the theories down. Jason Lamport wrote: > > Hello SPUGsters, > > I've been lurking on this list for a while now, and I thought it time > to introduce myself: > > My name's Jason, I've been programming computers since I was 8 (and > yes, I started with BASIC, but I turned into a damn good programmer > anyway, despite what Dijkstra says... ;) I've been programming with > Perl for about 3 years now: mostly CGI and CGI/database applications. > I don't think I have any particularly unusual talents when it comes > to programming, except that I'm probably the northwest's foremost > authority on Reinventing the Wheel :) > > When I'm not writing code, I'm usually occupied with dancing (I mean > professionally: with a dance company), writing plays, backpacking in > the wilderness, creating Art, and other Bad Habits. > > Anyone who's curious can find out a *little* more about me at > http://www.strangelight.com/ (though some of it's out of date). > > Now, I have a (possibly strange, perhaps even tactless) question to > ask of you all: > > What is the going rate for Perl programmers (and/or HTML designers/ > JavaScript programmers) these days? You see, up until now, all of my > jobs and assignments have been for non-profits and other legitimately > low-paying clients/employers, so I have absolutely no clue what's > standard in the corporate, for-profit world. I mean, I know I'm > being underpaid right now, but I have no idea just *how* underpaid. > I've recently begun interviewing for various positions in the > corporate world, and I've come to suspect that I'm botching the > interviews by making my salary requirements way too low, making the > interviewers assume that I must really not know what I'm doing. > (Which is true: I *don't* know what I'm doing, when it comes to > salary negotiations -- but they're not hiring me to negotiate > salaries, they're hiring me to write code, which is something I *do* > know how to do...) > > I've looked at some of those on-line salary surveys, but they're > always organized by job titles, not job-descriptions, and the job > titles are so hopelessly vague that I have no idea which job titles > really fits what I do. > > And there are so many other factors: like the fact that I *don't* > have a CS degree -- my qualifications are almost all from work > experience, not schooling -- which I assume lowers my earning > potential a few notches. I also assume that it makes a big > difference exactly what sort of project I'm working on: I'd expect to > get paid more per hour for setting up a complex, database-driven > e-commerce site than for setting up a simple form-to-email script. > > Anyway, any advice on setting fees for clients and/or salary > requirements for prospective employers would be greatly appreciated. > (If you don't think this discussion belongs on the SPUG list, just > email me privy.) > > Thanks! And happy coding. > > -jason > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address -- Jonathan Souza Software Engineer: Product Development The Cobalt Group: jsouza@cobaltgroup.com tel: 206.269.6363 ext 8289 Direct: 206.219.8289 800.909.8244 Fax: 206.219.8399 Home: courtassassin@home.com Phone: 206.762.1905 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From ced at carios2.ca.boeing.com Thu Jun 22 17:40:40 2000 From: ced at carios2.ca.boeing.com (ced@carios2.ca.boeing.com) Date: Wed Aug 4 00:07:23 2004 Subject: SPUG: File uploading.... Message-ID: <200006222240.PAA00810@carios2.ca.boeing.com> > Does anyone know how to send a file upload via http (ala using LWP? I can't find anything about it in the LWP or HTTP::Request > documentation. perhaps something like this: #!/usr/bin/perl -w use strict; use LWP::UserAgent; use HTTP::Request::Common qw( POST ); use HTTP::Response; my $browser = LWP::UserAgent->new(); my $request = POST 'http://some_host.com/cgi-bin/some_uploader.pl', [ filename => '/path/to/some_file_to_upload' ]; my $response = $browser->request($request); die "request failed: ",$response->as_string, "\n" unless $response->is_success; print "response: ", $response->content, "\n"; __END__ Rgds, -- Charles DeRykus - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From snickels at u.washington.edu Thu Jun 22 19:25:25 2000 From: snickels at u.washington.edu (Stephen Nickels) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: File uploading.... In-Reply-To: <000001bfdc58$64d86800$8210bed8@weezel.com> Message-ID: Yup, that did the trick. Thanks. --Steve On Thu, 22 Jun 2000, Jeremy Devenport wrote: > I seem to remember something in HTTP::Request::Common doing the trick. Let > me know if it works. > > Jeremy > > -----Original Message----- > From: owner-spug-list@pm.org [mailto:owner-spug-list@pm.org]On Behalf Of > Stephen Nickels > Sent: Thursday, June 22, 2000 12:30 AM > To: spug-list@pm.org > Subject: SPUG: File uploading.... > > > Does anyone know how to send a file upload via http (ala using LWP? I can't find anything about it in the LWP or HTTP::Request > documentation. > > Thanks! > --Steve Nickels > > "When once you have tasted flight, you will forever walk > the Earth with your eyes turned skyward, for there you have been, > and there you will always long to return" > -Leonardo da Vinci > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > > > "When once you have tasted flight, you will forever walk the Earth with your eyes turned skyward, for there you have been, and there you will always long to return" -Leonardo da Vinci - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Thu Jun 22 20:09:47 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Perl Job in Lynnwood, WA Message-ID: <20000622180947.B16323@timji.consultix.wa.com> We're looking for a Full Time perl programmer. Skillset needed: Someone beyond the basics, but not necessarily a GURU OOP knowledge a plus, but again, not required HTML knowledge essential DBI/DBD knowledge is essential SQL background very helpful. Contract / Permanent / 1099 ? We're looking for someone to work full time, at our facility in Lynnwood. Pay will be based on a lower-range base salary, with all "billed hours" paid on top. Range would be $30,000 - $72,000, depending on billing. Health benifets included. Telecommuting, while an option, would definitely be our second option. Type of work we do.... Our main business is in selling Commercial Perl CGI programs (Hyperseek, www.hyperseek.com is our flagship product, but we have many, many others, and even more on the way: www.iwebsys.com) The programmer we're looking for would be most likely providing custom modifications to our existing customers' systems (over 1000) and a few completely new, unrelated CGI systems for both existing customers, and new clients. A lot of what we do is modifications to existing code, although we're getting more and more into reinventing the wheel for some customers. 90% of what we do is perl, but very often, an HTML job arises... Our phone number here, is 425-712-1577, and I welcome any and all phone calls regarding the position. John Cokos ======================================== John Cokos, President / CEO: iWeb Inc. http://www.iwebsys.com jcokos@ccs.net ======================================== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From axhard2 at uswest.com Wed Jun 21 23:10:38 2000 From: axhard2 at uswest.com (Alyssa Harding) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: yapc::19100 - specifically Damian Conway Message-ID: <395191BF.8AFB92F1@uswest.com> Okay, well, since no one else from Seattle spoke up and said they were here I guess I'll just have to let you all know the lowdown on what I've seen and heard here. I went to Damian Conway's session yesterday 'Advanced Object-Oriented Perl' which he is going to be doing in Seattle in just a few short weeks through Consultix. The talk went over the time alotted but I didn't hear a single person complain - in fact many people I spoke to afterward were sorry it ended so soon. He gave an excellent overview of non-hash-based objects including arrays, scalars, globs and pseudo-hashes - went over pseudo-hashes in more detail (which are even easier to do in 5.6 than in 5.005 and IMHO very cool) and showed gorgeous examples of encapulation and Tie:SecureHash using scalars...and many other things which were all presented in a fun, easy-going way that left you feeling inspired, motivated and in the mood to play with objects and make them work hard. If you haven't signed up for this class you should. I am not the only one who today, after hearing his talk called 'Quantum Superpositions and the First Virtue' was just about ready to pack up and go back to college in Australia. He will be giving this one for SPUG and I won't spoil the surprise but you're in for a wild ride! A. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From davidpa at lucent.com Fri Jun 23 10:36:08 2000 From: davidpa at lucent.com (Patterson, David S (David)) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: SPUG email history? Message-ID: Oops, I know I'm supposed to archive every e-mail that comes across the spug list, but... Is there an archive of spug e-mail traffic available on the web? > --- "A genius is someone who shoots at something no one else can see, and hits it..." > David Patterson > Software Engineer > Lucent Technologies * > 6464 185th Ave NE > Redmond, WA 98052-6736 > 425-558-8008 x 2172 > 888-501-4835 Pgr > davidpa@lucent.com > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From marty.d.cudmore at boeing.com Fri Jun 23 12:28:51 2000 From: marty.d.cudmore at boeing.com (Marty D. Cudmore) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Recruiter Survey (Slightly-Off-Topic) Message-ID: <01BFDCFD.DDB81A90@winpooter.ca.boeing.com> A note of caution when dealing with recruiters and recruitment agencies. Recruiters are usually very eager to obtain your resume, regardless of your experience or intererst with them. Keep in mind that these service professionals not only appease their customers by providing them with candidates, but also by supplying them with resumes. A flow of resumes to a client, often appeases the client and leads them into thinking that their recruiters (retained or other) are actually performing services on their behalf. Recruitment agencies often hold agreements with their clients that prevent the client from hiring any person directly, once they have received a resume for that person from the recruiter or the recruitment agency. Normally, there is an expiration on this restriction (usually 1 year or less). A recruiter/agency should request and receive permission from a candidate prior to submitting them to each and every client. Often times this is not the case and your resume quickly becomes fodder for the recruiter's many clients. This has the potential of stifling your ability to seek employment on your own with the same companies as they are under the impression that they must obtain your services through the agency and not directly. While I haven't suffered any deleterious consequences due to this, I know it exists through persons I know in the industry. I make it a practice that, when submitting my resume to a recruiter/agency, to include in my email/fax/whatever a disclaimor stating that my resume is for the recuiter/agency's perusal only and that it may not be submitted to any clients, other agencies, or recruiters without my expressed permission. Cheers, Marty - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Fri Jun 23 13:07:10 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Recruiter Survey (Slightly-Off-Topic) In-Reply-To: <01BFDCFD.DDB81A90@winpooter.ca.boeing.com>; from marty.d.cudmore@boeing.com on Fri, Jun 23, 2000 at 10:28:51AM -0700 References: <01BFDCFD.DDB81A90@winpooter.ca.boeing.com> Message-ID: <20000623110710.A18924@timji.consultix.wa.com> On Fri, Jun 23, 2000 at 10:28:51AM -0700, Marty D. Cudmore wrote: > > A note of caution when dealing with recruiters and recruitment agencies. > (snip) > I make it a practice that, when submitting my resume to a > recruiter/agency, to include in my email/fax/whatever a disclaimor stating > that my resume is for the recruiter/agency's perusal only and that it may > not be submitted to any clients, other agencies, or recruiters without > my expressed permission. > > Cheers, > > Marty I've taken it one step farther than that; in the "footer" field of the printed resume itself (I never send the *.doc file they beg for -- too easy for them to clone and modify) I print in huge letters "Distribution of this resume requires my written permission, on a case-by-case basis." Sure, they could chop that field off before FAXing it, but at least I'd force them to commit that physical act, and when I interview with the client, I can check to see if their copy bears that qualification or not, as a check against illicit transmission. Not foolproof, but it gets the point across to the agency that my resume is not one they want to spam all over the planet. One comment on the remarks of other SPUGsters the other day, who said (paraphrasing vigorously): "If the recruiter offers a price you like, nevermind about the back-room shenanigans, just take the money". I don't want to have unethical agencies representing me, or to have to depend on unethical people or crooked companies to comply with the rules of our agreements. I'd rather take less money and work for an honest agency, and not have to worry about whether my representative would be at his desk, fleeing to another state, or already in prison when my next paycheck would come due. In the story I told the other day about my experience with an especially incompetent and unethical Eastside agency, I mentioned my disbelief that they were willing to let me draw up my own 1099-status contract with them. I should have emphasized that they signed that contract, in my presence, *without ever even reading it*, which told me very clearly that they had NO INTENTION WHATSOEVER of abiding by its provisions! If the client hadn't been a long-time acquaintance of mine (having taken three classes from me over a 7 year period), and someone I really wanted to work with, I would have run the other way very quickly 8-} I was lucky to complete this contract successfully, and worried every day of its duration whether the agency would still be there the next. In future contracts, I won't be counting on luck to get a happy outcome! *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES; 6/12: Int. Perl 6/15: Pat. Matching 8/14: UNIX 8/21: Shell | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From linux at consultix-inc.com Fri Jun 23 16:00:04 2000 From: linux at consultix-inc.com (Tim Maher) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Re: [SLL] Remote Backup In-Reply-To: <3.0.6.32.20000623134909.00ae7ad0@pop.seanet.com>; from gort@seanet.com on Fri, Jun 23, 2000 at 01:49:09PM -0700 References: <3.0.6.32.20000623132357.00ae48c0@pop.seanet.com> <3.0.6.32.20000623120343.00ae1a30@pop.seanet.com> <3.0.6.32.20000623120343.00ae1a30@pop.seanet.com> <20000623130634.A13405@jeeves.foneybone.com> <3.0.6.32.20000623132357.00ae48c0@pop.seanet.com> <20000623133709.A19575@timji.consultix.wa.com> <3.0.6.32.20000623134909.00ae7ad0@pop.seanet.com> Message-ID: <20000623140004.A20037@timji.consultix.wa.com> On Fri, Jun 23, 2000 at 01:49:09PM -0700, Marshall Dunlap wrote: > At 01:37 PM 06/23/2000 -0700, you wrote: > >On Fri, Jun 23, 2000 at 01:23:57PM -0700, Marshall Dunlap wrote: > >> Data is data > >> whether it's on a HD, jaz drive, floopie, or tape. As long as the data is > >> there what difference does it make what the media is? I'd like to know > >> because I get the feeling from your comments I'm missing something here. > > > >You could make the same argument in favor of carving heads of dead > >presidents (a la Mt. Rushmore) in Snow vs. Granite; guess which medium > >will provide a lasting tourist attraction for generations to come? 8-} > > > Rats! I was hopeing that my question wouldn't come off as a challenge, I > just wanted to know the difference. But since you bring it up are you > saying that tape is more stable than jaz disks? Again, I'm only asking. Your question didn't come off as a challenge, but I couldn't resist the opportunity to raise the issue that the medium itself is of critical importance, being the substrate that stores the data! Sorry if I sounded like a wise-guy (that would be the first time, I assure you 8-} ) Tape is about the most unreliable offline medium, next to paper, due to its sensitivity to temperature and humidity fluctuatinos, and the associated problems of stretching and loss of iron oxide (causing "dropouts"). I'm not an expert on the latest and greatest options, but my guess would be that for maximal stability of the stored data over time, you'd have to go with writeable CD-ROMS or DVDs, or something similar. However, for non-critical work (like I do at home, but unlike what the Pentagon is supposed to be doing), you might be willing to compromise the ability to store the data for 50 years to save some money! Personally, I use tapes, and have been pretty lucky with them so far, but for really important stuff, I'd be looking for a more durable medium. > Thanks! > > md > > ========================================================== | Tim Maher, Ph.D. Tel/Fax: (206) 781-UNIX | | SPUG Founder & Leader Email: spug@halcyon.com | | Seattle Perl Users Group HTTP: www.halcyon.com/spug | ========================================================== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From myocom at microsoft.com Fri Jun 23 16:11:13 2000 From: myocom at microsoft.com (Mark Yocom) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Re: [SLL] Remote Backup Message-ID: <7CD674FF54FBD21181D800805F57CD540E97C20A@RED-MSG-44> > From: Tim Maher [mailto:linux@consultix-inc.com] > Sent: Friday, June 23, 2000 2:00 PM > Tape is about the most unreliable offline medium, next to paper, > due to its sensitivity to temperature and humidity fluctuatinos, and > the associated problems of stretching and loss of iron oxide (causing > "dropouts"). I'm not an expert on the latest and greatest > options, but my > guess would be that for maximal stability of the stored data > over time, > you'd have to go with writeable CD-ROMS or DVDs, or something similar. > However, for non-critical work (like I do at home, but unlike what the > Pentagon is supposed to be doing), you might be willing to > compromise the > ability to store the data for 50 years to save some money! > Personally, > I use tapes, and have been pretty lucky with them so far, but > for really > important stuff, I'd be looking for a more durable medium. Two of the biggest wins for tape, though, are capacity and speed (as compared to CD-R/DVD). You can back up gigs and gigs of data onto a single tape (8mm AIT, for example), and do so at rather impressive rates ( > 100MB/minute). I haven't seen any optical medium that can hold a proverbial candle to that. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From ryanparr at nwlink.com Fri Jun 23 23:15:48 2000 From: ryanparr at nwlink.com (Ryan Parr) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: MIME Lite Formatting... Message-ID: <00062321335500.24465@ants> Hey, Has anyone out there ever had trouble with DB stored e-mails losing all newlines when sent with the MIME Lite module from an Oracle DB? We're experiencing this bizzare issue in about %2 of our e-mails. It is recipient specific, client-inspecific (though if they change to any other client at all it's solved), and rare as an honest politician :) If anyone has seen anything like this, or just any random ideas, it would be greatly appreciated. It's a difficult problem to troubleshoot and we're driving ourselves nuts over here! Thanks! Ryan Parr Account Setup Specialist Register Now! A Service of Digital River - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From gfb at sdc.cs.boeing.com Mon Jun 26 11:07:09 2000 From: gfb at sdc.cs.boeing.com (Gareth Beale) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Re: [SLL] Remote Backup Message-ID: <200006261607.JAA18708@klawatti.sdc.cs.boeing.com> The whole issue of long term storage is about much more than what kind of media you are using. As an aside, CDROMs and other optical media may have a very long physical lifetime, but will the drives and associated software be around 50 years from now? I'm sure we've got 7-track reel -to-reel tapes somewhere here at Boeing, but no drives to read them. Anyone got backups on any 5-1/4 inch floppies still? You can probably find a drive to read them, but it's getting harder. Tapes do have the advantage of capacity for now, and under the right storage conditions, have an acceptably long shelf life (~ 10-20 years). However, chances are that if you want to keep it that long, you'll be refreshing it periodically anyway. For anything other than text files, the application that created the file may be superseded many times over a period of years. e.g. Word processing or spreadsheet files, program binaries, etc. For REALLY important stuff, make more than one copy, maybe on more than one media type, and don't keep them all in one place. Maybe at least one in a safe deposit box or somthing like that. We send copies of our backups east of the mountains, out of the earthquake zone. Gareth ----- Begin Included Message ----- Your question didn't come off as a challenge, but I couldn't resist the opportunity to raise the issue that the medium itself is of critical importance, being the substrate that stores the data! Sorry if I sounded like a wise-guy (that would be the first time, I assure you 8-} ) Tape is about the most unreliable offline medium, next to paper, due to its sensitivity to temperature and humidity fluctuatinos, and the associated problems of stretching and loss of iron oxide (causing "dropouts"). I'm not an expert on the latest and greatest options, but my guess would be that for maximal stability of the stored data over time, you'd have to go with writeable CD-ROMS or DVDs, or something similar. However, for non-critical work (like I do at home, but unlike what the Pentagon is supposed to be doing), you might be willing to compromise the ability to store the data for 50 years to save some money! Personally, I use tapes, and have been pretty lucky with them so far, but for really important stuff, I'd be looking for a more durable medium. ========================================================== | Tim Maher, Ph.D. Tel/Fax: (206) 781-UNIX | | SPUG Founder & Leader Email: spug@halcyon.com | | Seattle Perl Users Group HTTP: www.halcyon.com/spug | ========================================================== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address ----- End Included Message ----- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From Shamon22 at aol.com Mon Jun 26 14:31:48 2000 From: Shamon22 at aol.com (Shamon22@aol.com) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: MAIL::MAILER Message-ID: <200006261827.OAA22589@happyfunball.pm.org> Hello all! I am trying to gather information from a web form and then forward it to an email account. Here is what I have so far: -------------------------------------------------------- #!/usr/bin/perl use Mail::Mailer; use CGI qw(:all); $from = param("from"); $mailto = param("mailto"); $subject = param("subject"); $body = param("text"); $mailer = Mail::Mailer->new("sendmail"); $mailer->open({ From => $from, To => $mailto, Subject => $subject }) or die "Can't open: $!\n"; print $mailer $body; $mailer->close(); -------------------------------------------------------- HELP! 8-) -Garrett - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From casey at haakenson.com Mon Jun 26 15:30:24 2000 From: casey at haakenson.com (casey@haakenson.com) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: web-based email Message-ID: <3.0.6.32.20000626133024.00982380@web-c.com> Can anyone out there recommend a web-based email program written in Perl? I've searched through Freshmeat and Google and have found quite a few that just aren't very professional, or cost $500-$1K for a license. Thanks, -Casey - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From jeff at planetoid.net Mon Jun 26 16:41:35 2000 From: jeff at planetoid.net (jeff) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: web-based email References: <3.0.6.32.20000626133024.00982380@web-c.com> Message-ID: <3957CE0F.1CA47EEA@planetoid.net> why kind of features are you looking for or have you seen something on the web that tickles your fancy. I think I'll build one for fun. I need the sample in my portfolio. casey@haakenson.com wrote: > Can anyone out there recommend a web-based email program written in Perl? > I've searched through Freshmeat and Google and have found quite a few that > just aren't very professional, or cost $500-$1K for a license. > > Thanks, > -Casey > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address -- Jeff Saenz jeff@planetoid.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From jeff at planetoid.net Mon Jun 26 16:51:11 2000 From: jeff at planetoid.net (jeff) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: cgi script template References: <3.0.6.32.20000626133024.00982380@web-c.com> Message-ID: <3957D04E.93AC72CC@planetoid.net> is the following a good template for develping perl/cgi/db applications? #!/usr/bin/perl use stuff/config eval { connect to db do some stuff }; if ($@) error reporting } exit 0; or does defining a sig die handler improve readability or exception handling... jeff@planetoid.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From casey at haakenson.com Mon Jun 26 16:59:45 2000 From: casey at haakenson.com (casey@haakenson.com) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: web-based email In-Reply-To: <3957CE0F.1CA47EEA@planetoid.net> References: <3.0.6.32.20000626133024.00982380@web-c.com> Message-ID: <3.0.6.32.20000626145945.00986d70@web-c.com> It's not so much a particular feature that I'm looking for, it's usability. There are lots of packages out there that have the basic feature set (admitedly, some better than others) but what all but the expensive ones lack is usability. Maybe it's because I'm a UI designer by day that I want it to be more polished than most people. I wish I had the time to contribute to some of the GPL'd packages out there because they have all of the core functionality already there. On a side note, I wrote 75% of an email client about 2.5 years ago in Cold Fusion and trust me, it is a lot harder than you can even imagine until you really dig into it, unless you want to only have very basic functionality. I was basing my model off of hotmail and it was extremely complex. Especially in CF, I'm sure Perl could handle it better. -Casey At 02:41 PM 6/26/00 -0700, jeff wrote: >why kind of features are you looking for or have you seen something on the web >that tickles your fancy. I think I'll build one for fun. I need the sample in >my portfolio. > >casey@haakenson.com wrote: > >> Can anyone out there recommend a web-based email program written in Perl? >> I've searched through Freshmeat and Google and have found quite a few that >> just aren't very professional, or cost $500-$1K for a license. >> >> Thanks, >> -Casey >> >> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >> POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org >> Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ >> For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL >> Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > >-- >Jeff Saenz >jeff@planetoid.net > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From ericj at cubesearch.com Mon Jun 26 17:29:56 2000 From: ericj at cubesearch.com (Eric Johanson) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: web-based email In-Reply-To: <3.0.6.32.20000626133024.00982380@web-c.com> Message-ID: Casey - I've used mailman from the Endymion Corp for quite a few years. (from back when it was free). It's a simple perl script that supports a whole bunch of "standard yet neato features". For "non-profit" projects it's free, otherwise $250-400. The "pro" version just allows the user to keep the mail downloaded to the local server. It's stable, very few bugs, and they are great with support. Make sure that you ask for the "development version" when you purchase it; otherwise the code looks like greek. http://www.endymion.com No Affiliation, etc, etc... If you are looking for something "richer", check out http://www.millenniumoffice.com/ It's made by the same folks who made a telnetd for NT. It would be a "NT only solution" to web based mail, but it does have a plethora of other features. If you are looking for "free" (as in speech & beer), I'm not quite sure what to tell you. Write your own? I've heard that the POP3 modules for perl are quite good... Anyone want to comment? I hope this answers your query, otherwise please redefine your select statement. Regards, -Eric On Mon, 26 Jun 2000 casey@haakenson.com wrote: > Can anyone out there recommend a web-based email program written in Perl? > I've searched through Freshmeat and Google and have found quite a few that > just aren't very professional, or cost $500-$1K for a license. > > Thanks, > -Casey > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From jmates at mbt.washington.edu Mon Jun 26 18:04:22 2000 From: jmates at mbt.washington.edu (Jeremy Mates) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: cgi script template In-Reply-To: <3957D04E.93AC72CC@planetoid.net> Message-ID: On Mon, 26 Jun 2000, jeff wrote: > #!/usr/bin/perl #!/usr/bin/perl -T Has all sorts of advantages, such as reducing your CGI's odds of appearing on a CERT/Sans/SecurityFocus top-ten list... :) -- Jeremy Mates (206) 221-4714 Fax: 685-7301 Systems Administrator K353-B, Health Sciences Center http://www.mbt.washington.edu/ Box 357730 University of Washington Seattle, WA, 98195 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Tue Jun 27 09:58:10 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Mac Resolutions Question - for Damian Message-ID: <20000627075810.A1570@timji.consultix.wa.com> SPUGsters, Not being a Mac-o-phile, I'm unsure about something that I need to get sure about in preparation for Damian's visit, and I thought somebody here might be able to help. I'm unable to reach "The Damian" himself these days (he isn't answering Email), the logical source for the answers to the questions below, so that's why I'm asking you folks. He'll be using a Mac laptop during his presentations here (a PowerBook, if memory serves), and for his two fee-based one-day seminars (http://www.consultix-inc.com/advoop.html; http://www.consultix-inc.com/parsing.html), I need to rent a data projector. He told me he'd need one with 1024x768 resolution, and I've got one reserved that has that "native" resolution (i.e., no cheating by dropping scan lines, etc.). It specifies that it will scale up from the Mac 832x624 screen (but no other Mac dimensions are specified). Questions: Is this the *only* Mac resolution out there, or do I need to worry about him possibly using a different one that this projector won't handle? Also, what will the external monitor jack look like on his laptop? Regular 15-pin VGA style, or something else? If the latter, maybe I'll need to find an adapator cable somewhere (as will Andy et al over at N2H2! ). TIA, -Tim P.S. It's not too late to register for one or both of Damian's seminars! 8-} http://www.consultix-inc.com/reg.html *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES; 6/12: Int. Perl 6/15: Pat. Matching 8/14: UNIX 8/21: Shell | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From jdevlin at stadiumdistrict.com Tue Jun 27 11:49:22 2000 From: jdevlin at stadiumdistrict.com (Joe Devlin) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: cgi script template Message-ID: <01BFE01C.FDEC6F60@tac-lx100-ip38.nwnexus.net> This is a shell of a functioning script. There are subroutines in Common.pm that we use to make are lives easier, but are not included here for brevity. #!/usr/bin/perl -w # # # # # # # # # # # # # # # # # # # # # # # # # # # # # File: myquery.pl # Written by: Devlin Technical Consulting # Tacoma, WA # # Customer: xxx # xxx # # Description: # This query accepts information from the # forms ........ # # It enters the data into tables xxxx ...... # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Revision 1 3/5/00 Initial # Initialize some modules use DBI; #datbase interface use CGI qw(:all); #creating web pages use CGI param; #or this for getting parameters use English; use diagnostics; #verbose failure codes use Common; #Devlin Technical Consulting common commands use strict; #must declare global variables #here are the globals use vars qw( $action $item $dummy $mstate $i $n %form_data $form_data $document_root %fields $path $filetoopen $dsn $user $password $server_name $query_string); # Initialize some variables $mstate=param("mstate");#state machine design variable $dummy=""; #dummy return value for debug # # # # # # # # # # # # # # # # # # # # # # # # # # # # #Main part of program #################################### # get the data passed from the form #get the input from the form by either method if ($ENV{'REQUEST_METHOD'} eq "GET") { $query_string = $ENV{'QUERY_STRING'}; } elsif ($ENV{'REQUEST_METHOD'} eq "POST") { read (STDIN, $query_string, $ENV{'CONTENT_LENGTH'}); } else { # Offline mode goes here. } %form_data=form_to_hash($query_string); #################################### # get the directory from which web documents are served $document_root = $ENV{'DOCUMENT_ROOT'}; #################################### # get the server name hosting this site $server_name = $ENV{'SERVER_NAME'}; # # # # # # # # # # # # # # # # # # # # # # # # # # # # #Figure out what form (or mstate) just called this script # submission of form query by users parameters, if ($mstate eq 'query_1') { &pp_query_1(); } # + + + + + + + + + + + + + + + + + + exit(0); #Define subroutines # + + + + + + + + + + + + + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + # sub pp_query_1{ #Define some local variables my $dbh= my $sth= my $ary_ref= my $account_number= my $query=""; #Pre-process the form data #highlight video checked must be Y(es) or N(o) for comparison to the databse unless($form_data{'myUsersChoice'} eq "Y"){ $form_data{'myUsersChoice'} = "N"; } #Get login, password, and datasource name &get_login_pass_dsn; #Access the Database #my $trace_level=3;#debug only #my $h = DBI->trace($trace_level);#debug only $dbh = DBI->connect($dsn, $user, $password, { RaiseError => 0, PrintError=> 1}) or &bail_out("Cannot connect to database"); #issue query: get the account number of the first result $query=qq[ SELECT table1.field1 FROM table2, table3, table4 WHERE table.a_field = "$form_data{'a_field'}"]; $sth = $dbh-> prepare ($query) or &bail_out("Cannot prepare query"); $sth->execute () or &bail_out("Cannot execute query"); #read the results of the query: account number of first match $account_number = $sth->fetchrow_array(); #Check the results if ($account_number==undef) {&bail_out("No results found during retrieval.");} $sth->finish () or &bail_out("Cannot finish query"); $dbh->disconnect or &bail_out("Cannot disconnect from database"); #okay the query was successful, display the results &print_frameset($account_number); }# end of sub pp_query_1 # + + + + + + + + + + + + + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + # sub bail_out{ my $message = shift; my $filetoopen = "/search/query_fail_template.html"; %fields = ( error_message=>"$message" ); print "Content-type: text/html\n\n";#must preceed print template command print template( "$document_root" . "$filetoopen", \%fields); die "Bailed out ...."; } # + + + + + + + + + + + + + + + + + + + + + + + + + + # # + + + + + + + + + + + + + + + + + + + + + + + + + + # # ---------- From: jeff[SMTP:jeff@planetoid.net] Sent: Monday, June 26, 2000 2:51 PM Cc: spug-list@pm.org Subject: SPUG: cgi script template is the following a good template for develping perl/cgi/db applications? #!/usr/bin/perl use stuff/config eval { connect to db do some stuff }; if ($@) error reporting } exit 0; or does defining a sig die handler improve readability or exception handling... jeff@planetoid.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From starfire at zipcon.net Tue Jun 27 14:16:34 2000 From: starfire at zipcon.net (Richard Anderson) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: cgi script template References: <01BFE01C.FDEC6F60@tac-lx100-ip38.nwnexus.net> Message-ID: <010501bfe06c$36ad7390$3288ddd1@adcom133> I notice you include the CGI.pm module, yet do not use its excellent param() subroutine to read CGI parameters. param() is much more robust that parsing the parameters with your own code; it handles multi-valued parameters nicely, handles special cases without barfing, and handles weird characters robustly. Richard.Anderson@unixscripts.com www.zipcon.net/~starfire/home (personal) www.unixscripts.com (corporate) ----- Original Message ----- From: "Joe Devlin" To: Sent: Tuesday, June 27, 2000 9:49 AM Subject: RE: SPUG: cgi script template > This is a shell of a functioning script. > There are subroutines in Common.pm that we use > to make are lives easier, but are not included > here for brevity. > > > #!/usr/bin/perl -w > > # # # # # # # # # # # # # # # # # # # # # # # # # # # # > # File: myquery.pl > # Written by: Devlin Technical Consulting > # Tacoma, WA > # > # Customer: xxx > # xxx > # > # Description: > # This query accepts information from the > # forms ........ > # > # It enters the data into tables xxxx ...... > # > # # # # # # # # # # # # # # # # # # # # # # # # # # # # > # Revision 1 3/5/00 Initial > > # Initialize some modules > use DBI; #datbase interface > use CGI qw(:all); #creating web pages > use CGI param; #or this for getting parameters > use English; > use diagnostics; #verbose failure codes > use Common; #Devlin Technical Consulting common commands > use strict; #must declare global variables > #here are the globals > use vars qw( $action $item $dummy $mstate $i $n %form_data > $form_data $document_root %fields $path > $filetoopen $dsn $user $password $server_name > $query_string); > > > # Initialize some variables > $mstate=param("mstate");#state machine design variable > $dummy=""; #dummy return value for debug > > # # # # # # # # # # # # # # # # # # # # # # # # # # # # > #Main part of program > > #################################### > # get the data passed from the form > #get the input from the form by either method > if ($ENV{'REQUEST_METHOD'} eq "GET") > $query_string = $ENV{'QUERY_STRING'}; > } > elsif ($ENV{'REQUEST_METHOD'} eq "POST") { > read (STDIN, $query_string, $ENV{'CONTENT_LENGTH'}); > } > else { > # Offline mode goes here. > } > %form_data=form_to_hash($query_string); > > > #################################### > # get the directory from which web documents are served > $document_root = $ENV{'DOCUMENT_ROOT'}; > > #################################### > # get the server name hosting this site > $server_name = $ENV{'SERVER_NAME'}; > > # # # # # # # # # # # # # # # # # # # # # # # # # # # # > #Figure out what form (or mstate) just called this script > # submission of form query by users parameters, > if ($mstate eq 'query_1') > { > &pp_query_1(); > } > # + + + + + + + + + + + + + + + + + + > > exit(0); > > #Define subroutines > # + + + + + + + + + + + + + + + + + + + + + + + + + + # > # + + + + + + + + + + + + + + + + + + + + + + + + + + # > sub pp_query_1{ > #Define some local variables > my $dbh= my $sth= my $ary_ref= my $account_number= my $query=""; > > #Pre-process the form data > #highlight video checked must be Y(es) or N(o) for comparison to the databse > > unless($form_data{'myUsersChoice'} eq "Y"){ > $form_data{'myUsersChoice'} = "N"; > } > > #Get login, password, and datasource name > &get_login_pass_dsn; > > #Access the Database > #my $trace_level=3;#debug only > #my $h = DBI->trace($trace_level);#debug only > > $dbh = DBI->connect($dsn, $user, $password, > { RaiseError => 0, PrintError=> 1}) > or &bail_out("Cannot connect to database"); > > #issue query: get the account number of the first result > $query=qq[ > > SELECT > table1.field1 > FROM > table2, > table3, > table4 > WHERE > table.a_field = "$form_data{'a_field'}"]; > > $sth = $dbh-> prepare ($query) > or &bail_out("Cannot prepare query"); > $sth->execute () > or &bail_out("Cannot execute query"); > > #read the results of the query: account number of first match > $account_number = $sth->fetchrow_array(); > > #Check the results > if ($account_number==undef) > {&bail_out("No results found during retrieval.");} > > $sth->finish () > or &bail_out("Cannot finish query"); > > $dbh->disconnect > or &bail_out("Cannot disconnect from database"); > > #okay the query was successful, display the results > &print_frameset($account_number); > > }# end of sub pp_query_1 > # + + + + + + + + + + + + + + + + + + + + + + + + + + # > # + + + + + + + + + + + + + + + + + + + + + + + + + + # > > > # + + + + + + + + + + + + + + + + + + + + + + + + + + # > # + + + + + + + + + + + + + + + + + + + + + + + + + + # > sub bail_out{ > my $message = shift; > my $filetoopen = "/search/query_fail_template.html"; > > %fields = ( > error_message=>"$message" > ); > print "Content-type: text/html\n\n";#must preceed print template command > print template( "$document_root" . "$filetoopen", \%fields); > die "Bailed out ...."; > } > # + + + + + + + + + + + + + + + + + + + + + + + + + + # > # + + + + + + + + + + + + + + + + + + + + + + + + + + # > # > > > > > ---------- > From: jeff[SMTP:jeff@planetoid.net] > Sent: Monday, June 26, 2000 2:51 PM > Cc: spug-list@pm.org > Subject: SPUG: cgi script template > > is the following a good template for develping perl/cgi/db applications? > > #!/usr/bin/perl > > use stuff/config > > eval { > connect to db > do some stuff > }; > > if ($@) > error reporting > } > > exit 0; > > or does defining a sig die handler improve readability or exception > handling... > > jeff@planetoid.net > > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > > > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org > Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ > For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL > Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address > > > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From lexical at bumppo.net Tue Jun 27 15:00:17 2000 From: lexical at bumppo.net (Nathaniel Irons) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Mac Resolutions Question - for Damian In-Reply-To: <20000627075810.A1570@timji.consultix.wa.com> Message-ID: <20000627130018-f01010601-243f36e7@216.122.128.207> On 6/27/00 at 7:58 AM, tim@consultix-inc.com (Tim Maher/CONSULTIX) wrote: > Questions: Is this the *only* Mac resolution out there, or do I need > to worry about him possibly using a different one that this projector > won't handle? Macs have the same range of resolutions as any other kind of computer. Details are machine-specific. All powerbooks sold since 1998 have had a native resolution of 1024x768 (most can also run at 800x600 and 640x480, but by interpolating pixels, so the image is fuzzier) -- though that's just the built-in LCD. They can drive external monitors at just about any resolution you care to specify, including 832x624. I presume the projector appears to the machine as just another monitor. Different powerbooks have different multiple-monitor capabilities -- older models mirror what's on the external, blanking the built-in if the external runs at a resolution unsupported by the LCD. Powerbooks sold in the last year support a traditional multiple-monitors setup, where the LCD becomes additional real estate. It's hard to say what Conway expects, but mirroring seems to make the most sense if he's standing without a clear view of the projected screen. In that case, 832x624 will most likely run fine on the projector, but the LCD will be out. > Also, what will the external monitor jack look like on his laptop? > Regular 15-pin VGA style, or something else? Yes, Powerbooks have had VGA-style monitor jacks for years. Virtually all of the Powerbook G3 models (black, with the white inverted apple on the back) can also handle S-Video out. I've never had to deal with a projector, but I usually go the S-Video route for NTSC conversion -- DVD playback, etc. -nat - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From sean.owens at neoinformatics.com Tue Jun 27 18:18:01 2000 From: sean.owens at neoinformatics.com (Sean Owens) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Consultant needed for a sometime-spugite :) In-Reply-To: Message-ID: Hi Spugsters! My name is Sean Owens, and I'm a Project Lead at NeoInformatics (a Perl/DB creation startup downtown). You may have heard of us as part sponsors for the Damian Conway visit! (If not, check out the SPUG site and you'll see us, I checked!) Anyway, I'm working on a improving our development cycle, we realize we could use someone with "expert" skills in database product development (we do use Perl, and Tim suggested one of you might fit the bill, and be interested). Someone who can look around and say "you can do this better, like this: ___." Specifically we're looking for the following: ** A 1-ish week consultancy, starting asap. Whatever is enough time to take a look around & prepare a recommendation. ** Skills we're looking for: Perl, as well as other languages; Oracle DB experience, but again other DB's would be good as well. Generally, knowledge & experience in internet database design, development and programming. Some Project Mgmt or Functional Mgmt experience would be helpful. ** Pay: I'm not the bank, but I do know it'll depend on experience. If you're interested we can discuss. ** Objective of the consultant: We're looking for someone to come in for a few days to a week, get in the trenches as best they can, and get to know our development process. Basically we understand that our development process has a lot of problems, and we're working to fix things, but we also feel that an outside expert would be valuable, to avoid the "forest for the trees" problems that can arise when you're too close to the issues. Currently we use Perl, SQL and Oracle to create complex databases with an application (for web use) front end (we can give more description to interested folks and have them talk to our VP of development), but we are also open to other programming languages or even DB products. So we're looking for recommendations to best and most efficiently serve our customers. Please drop me an email or give me a call if you are interested. Thanks very much! Sean Owens | Project Lead N E O I N F O R M A T I C S seano@neoinformatics.com 206-381-8884 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Wed Jun 28 17:32:06 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: The Damian Cometh! Next week! Message-ID: <20000628153206.A6557@timji.consultix.wa.com> SPUGsters, Just a reminder that Damian's fee-based one-day seminars take place next Thursday and Friday, in Kirkland, and his free (E-)?SPUG talks next Wednesday and Thursday. SPUG's Alyssa Harding, who raves below about the short-version of his OOP talk at YAPC, liked it so much that she's signed up for the full-day version next Thursday! You can too: http://www.consultix-inc.com/sched.html > Alyssa says: > I went to Damian Conway's session yesterday 'Advanced Object-Oriented > Perl' which he is going to be doing in Seattle in just a few short weeks > through Consultix. The talk went over the time alotted but I didn't > hear a single person complain - in fact many people I spoke to afterward > were sorry it ended so soon. > > He gave an excellent overview of non-hash-based objects including > arrays, scalars, globs and pseudo-hashes - went over pseudo-hashes in > more detail (which are even easier to do in 5.6 than in 5.005 and IMHO > very cool) and showed gorgeous examples of encapsulation and > Tie:SecureHash using scalars...and many other things which were all > presented in a fun, easy-going way that left you feeling inspired, > motivated and in the mood to play with objects and make them work hard. > > If you haven't signed up for this class you should. See: http://www.consultix-inc.com/advoop.html > I am not the only one who today, after hearing his talk called > 'Quantum Superpositions and the First Virtue' . . . That talk will be given again next Thursday evening, at E-SPUG in Redmond: http://www.halcyon.com/spug/ http://espug.pm.org > . . . was just about ready to pack up and go back to college > in Australia. He will be giving this one for SPUG and I won't spoil the > surprise but you're in for a wild ride! > > A. *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES: 8/14: UNIX Fund. 8/21: Shell & Utilities 9/11: Perl + Mods | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Wed Jun 28 17:36:24 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: go.com job, Downtown Seattle Message-ID: <20000628153624.B6557@timji.consultix.wa.com> Howdy. I'm a Perl programmer for the Content Services/QBot group of http://Go.com . Our group is looking for a senior Perl developer. The job description is below and is also available at: http://jobs.go.com/jobs/job-listings/Go-seattle/160-00-175.html Information about benefits is at: http://jobs.go.com/jobs/benefits.html General company information is at: http://jobs.go.com/jobs/Default.htm Though not addressed directly on the benefits page, stock options are standard, and there is potential for some telecommuting. The job is in downtown Seattle. STAFF SOFTWARE ENGINEER Job#160-00-175 Position Type: Regular, Full-Time Project/Department: Content Services Requirements: The ideal candidate will have a bachelor's degree in Computer Science or equivalent experience; 5 - 10 years of practical development experience; extensive knowledge of UNIX operating system, shell scripting and Perl, experience in SQL Server or Oracle; and practical experience in internet related technologies such as HTTP, HTML, XML, and Java. Strong communication skills needed. Description: The staff software engineer will be the primary person responsible for the design and improvement of Qbot web spidering engine. This person will take the leadership role in the development of UNIX/PERL based software tools. Previous experience and continued interest in providing team leadership, mentorship, and performing ongoing technical reviews required. This group has a very positive, fun, social feel. We hire people who enjoy working as part of a team and interacting with others. We have maintained a startup-like feel, though we enjoy the resources of a large company and the exposure granted by being part of a major portal. Please contact me directly to learn more about the group or position. Thanks for your time. Cheers, Noah -- Noah Iliinsky Sr. QBot Engineer (206) 664-4280 noah.iliinsky@corp.go.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From gfb at sdc.cs.boeing.com Wed Jun 28 18:28:15 2000 From: gfb at sdc.cs.boeing.com (Gareth Beale) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Summary: UW Certificate program in PERL Message-ID: <200006282328.QAA26799@klawatti.sdc.cs.boeing.com> A few weeks ago I asked for feedback from anyone with any exposure to the above subject line. A few responses have trickled in over the weeks, and I thought I would summarise to the list. I got only one response from someone who took the class, this feedback was extremely positive. Another response came from someone who is taking the C++ certificate via Distance Learning, and this was very negative, as was his colleague's experience with the Java certificate program. Not really enough to build a case either way. I got some feedback from some others, though this was mostly rumour, that the course was Windows-centric. I contacted an instructor and was told that this was somewhat true the first time it was held, but it's now about 50/50 Windows/Unix, and most of the content is not platform-dependent. The biggest downside for me is that the course location is switching from the Eastside to downtown Seattle, with all the inherent parking problems, not to mention the commute in my case. The location is somewhere on 4th. This may be the the same lab that Tim used for one of his classes last year. That was a UW facility wasn't it Tim? I was also told by the UW office that they have no plans to offer this program via Distance Learning. All in all, I did not get enough information on the program itself to sway me one way or the other. A decision is more likely to be about convenience. It's unlikely I'll want to commute to downtown Seattle one evening a week, but I think I'll go to an informational meeting when they come up, just in case I can be convinced. Usually they'll hold these a month or so before classes start, maybe in September. I'm still interested in any personal experiences with the program if anyone still has any feedback they haven't voiced yet. Gareth Gareth Beale (425) 865-5375 # e-mail: The Boeing Company # gareth.beale@boeing.com P.O. Box 3707, MC 7J-04 # Seattle, Wa. 98124-2207 # fax: (425) 865-2221 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Wed Jun 28 19:38:46 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Summary: UW Certificate program in PERL In-Reply-To: <200006282328.QAA26799@klawatti.sdc.cs.boeing.com>; from gfb@sdc.cs.boeing.com on Wed, Jun 28, 2000 at 04:28:15PM -0700 References: <200006282328.QAA26799@klawatti.sdc.cs.boeing.com> Message-ID: <20000628173846.D6952@timji.consultix.wa.com> On Wed, Jun 28, 2000 at 04:28:15PM -0700, Gareth Beale wrote: > > A few weeks ago I asked for feedback from anyone with any exposure to the > above subject line. A few responses have trickled in over the weeks, and > I thought I would summarise to the list. > (snip) > not to mention the commute in my case. The location is somewhere on 4th. This > may be the the same lab that Tim used for one of his classes last year. That > was a UW facility wasn't it Tim? (snip) > Gareth > > Gareth Beale (425) 865-5375 # e-mail: > The Boeing Company # gareth.beale@boeing.com > P.O. Box 3707, MC 7J-04 # > Seattle, Wa. 98124-2207 # fax: (425) 865-2221 > That's right. But because several students complained about the lab rules, which prohibited bringing any food or drink into the computer area, and the UW doubled my rent to boot, we don't hold classes there anymore. (Morals: (1) Rules meant for students don't sit well with experienced computer professionals who can usually keep their beverages out of the keyboard; (2) Double your prices and you'll lose your customers!). > I'm still interested in any personal experiences with the program if anyone > still has any feedback they haven't voiced yet. Spugster "largest@largest.org" is the current leader of this program, so maybe he can tell us more! -Tim *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES: 8/14: UNIX Fund. 8/21: Shell & Utilities 9/11: Perl + Mods | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Thu Jun 29 12:48:41 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: SPUG Digests Available! Message-ID: <20000629104841.A9930@timji.consultix.wa.com> SPUGsters, I've been asking the overworked, underpaid, easily antagonized PerlMongers folks about digesting our mail for some time, and finally yesterday I got a response! We've got digests! (and apparently have had them, unbeknownst to us, for some time). If you want to see ancient SPUG postings, Email [s]ubscribe spug-list-digest # squelch the [] ! to majordomo@pm.org, and then you can send a message containing index spug-list-digest to see the digests that are available, and a subsequent message to retrieve the one you want: get spug-list-digest v01.n001 For example: index spug-list-digest .: total 4502 -rw-r----- 1 mjordomo daemon 45782 Jul 30 1999 v01.n001 (snip) -rw-rw---- 1 mjordomo daemon 41725 Jun 28 18:32 v01.n054 ========================================================== | Tim Maher, Ph.D. Tel/Fax: (206) 781-UNIX | | SPUG Founder & Leader Email: spug@halcyon.com | | Seattle Perl Users Group HTTP: www.halcyon.com/spug | ========================================================== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From largest at largest.org Fri Jun 30 01:11:56 2000 From: largest at largest.org (Joel Grow) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Summary: UW Certificate program in PERL In-Reply-To: <20000628173846.D6952@timji.consultix.wa.com> Message-ID: On Wed, 28 Jun 2000, Tim Maher/CONSULTIX wrote: > On Wed, Jun 28, 2000 at 04:28:15PM -0700, Gareth Beale wrote: > > > > A few weeks ago I asked for feedback from anyone with any exposure to the > > above subject line. A few responses have trickled in over the weeks, and > > I thought I would summarise to the list. > > > (snip) > > not to mention the commute in my case. The location is somewhere on 4th. This > > may be the the same lab that Tim used for one of his classes last year. That > > was a UW facility wasn't it Tim? > > (snip) > > > Gareth > > > > Gareth Beale (425) 865-5375 # e-mail: > > The Boeing Company # gareth.beale@boeing.com > > P.O. Box 3707, MC 7J-04 # > > Seattle, Wa. 98124-2207 # fax: (425) 865-2221 > > > > That's right. But because several students complained about the lab > rules, which prohibited bringing any food or drink into the computer area, > and the UW doubled my rent to boot, we don't hold classes there anymore. [snip] > > I'm still interested in any personal experiences with the program if anyone > > still has any feedback they haven't voiced yet. > > Spugster "largest@largest.org" is the current leader of this program, so > maybe he can tell us more! > > -Tim > *========================================================================* > | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | > | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | > | CLASSES: 8/14: UNIX Fund. 8/21: Shell & Utilities 9/11: Perl + Mods | > | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | > *========================================================================* I've been trying to stay on the sidelines on this one, since I'm heavily involved in the UW program, and our esteemed SPUG leader runs a different (I don't want to say competing) program. :-) Seriously though, I've heard fantastic things about the Consultix courses, and Tim is really knowledgeable. If you're looking for an on-site course, or a course which takes place over several full days, talk to Tim right away. If you're looking for a once/week Perl learning format over the course of an academic year, with quizes and a final project, then the UW program is just for you. Both will be challenging and a lot of fun, and you'll learn a lot either way. I'm going to go out on a limb and say that the UW course will give you more in-depth exposure to the topics, but only because we have more time in which to do it. I'm not sure what exactly you'd like answered about the UW course, so I'll sort of ramble for a bit. (the info on the UW website is a bit out of date. They're printing new brochures and I'm told the site will be updated very soon) We try to be as OS-agnostic as possible. I come from a Unix Perl background, and I found that 99% of my scripts ported directly to Win32 without changing a thing. I've had Mac students and they had no problems at all. We try to really emphasize the fundamentals and create projects that build on previous knowledge, slowly adding to your programming bag of tricks. After the students are well-grounded in the basics, we move into complex data structures, OO Perl programming, databases, and CGI programming. The goal by the end of the class is for the students to build a fully functioning database-driven website (with customer login, shopping cart, employee management, back-end reporting, etc) for Winefred, our fictional veterinarian friend who runs her own animal business. We also take time to incorporate special topics the students are interested in. Past examples of this include ADO/OLE, shared memory and socket/network programming, and Perl/Tk. Regarding the classroom--I've been told by UW that the class will be held in a new laptop lab downtown (on 4th and something... I don't have the exact address with me here at home). It sounds like a very nice facility from how it was described to me. I don't know about the no-food rule, but the computers in the lab will be the student's laptop, so I can't see UW caring about that. (I almost always have some sort of snack with me when I'm programming) Someone mentioned bad parking--in my experience, parking downtown isn't very difficult after 5:30 or so. I'll stop here. Feel free to contact me privately if you have questions. I'd be glad to provide email addresses of UW Perl alums so you could get their opinion. It's a fun class, and I think you'll enjoy it! Thanks Joel - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Fri Jun 30 01:58:03 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Summary: UW Certificate program in PERL In-Reply-To: ; from largest@largest.org on Fri, Jun 30, 2000 at 02:11:56AM -0400 References: <20000628173846.D6952@timji.consultix.wa.com> Message-ID: <20000629235803.B12379@timji.consultix.wa.com> > > Spugster "largest@largest.org" is the current leader of this program, so > > maybe he can tell us more! > > > > -Tim > > I've been trying to stay on the sidelines on this one, since I'm heavily > involved in the UW program, and our esteemed SPUG leader runs a different > (I don't want to say competing) program. :-) Don't give that a thought; even if our courses were direct competitors (which they're not), I'd like you to feel free to voice your opinions and "tout your tutorials" in this forum! Although my training business obviously serves the very kind of people who read this list, I try hard to avoid exploiting my SPUG soapbox, by keeping my personal business interests relatively separate from those of SPUG. And if I get out of line, I hope somebody will please let me know! 8-} > Seriously though, I've heard fantastic things about the Consultix courses, > and Tim is really knowledgeable. If you're looking for an on-site course, > or a course which takes place over several full days, talk to Tim right > away. You're absolutely right on all counts! 8-} Seriously, I don't claim to be an all-knowing Perl guru; in fact, as I've said many times in public, the reason I started SPUG was so that the real local gurus could teach *me* more Perl! (and it has worked, and they know who they are. . .) I have made some progress over the two past two decades in learning how to design effective yet enjoyable training experiences, and I like meeting and working with my students - so I'm working in my dream job! 8-} > If you're looking for a once/week Perl learning format over the > course of an academic year, with quizes and a final project, then the UW > program is just for you. Both will be challenging and a lot of fun, and > you'll learn a lot either way. I'm going to go out on a limb and say that > the UW course will give you more in-depth exposure to the topics, but only > because we have more time in which to do it. > > We try to really emphasize the fundamentals and create projects that build > on previous knowledge, slowly adding to your programming bag of tricks. > After the students are well-grounded in the basics, we move into complex > data structures, OO Perl programming, databases, and CGI programming. > The goal by the end of the class is for the students to build a fully > functioning database-driven website (with customer login, shopping cart, > employee management, back-end reporting, etc) for Winefred, our fictional Wine-Fred? Is that a windoze-emulator joke, or just a variant spelling of the name Winnifred? 8-} > veterinarian friend who runs her own animal business. > Joel This goal sounds great to me, and is exactly the type of thing that can only be done when students have a week of homework-time between lectures, which is fundamentally incompatible with the 8-hours per-day 3-5 days-in-one-week format of my company's Corporate-style classes. 8-( Go Joel! But our style works quite well for the type of individuals who just need to be shown the path, nudged down it, and warned of the pitfalls they're likely to encounter along the way, to allow them to complete the rest of the journey on their own. Or, to complete just enough to prepare them for the next class in the sequence. TMTOWTDI! Vive la difference! *========================================================================* | Dr. Tim Maher, CEO, Consultix (206) 781-UNIX/8649; ask for FAX# | | Email: tim@consultix-inc.com Web: http://www.consultix-inc.com | | CLASSES: 8/14: UNIX Fund. 8/21: Shell & Utilities 9/11: Perl + Mods | | DAMIAN CONWAY Seminars; Adv. OO Perl: 7/6, Parsing with Modules: 7/7 | *========================================================================* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From jeff at planetoid.net Fri Jun 30 15:17:49 2000 From: jeff at planetoid.net (jeff) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: repeatedly hitting submit button References: <20000629104841.A9930@timji.consultix.wa.com> Message-ID: <395D006C.B1F3AE3C@planetoid.net> what happens when the user repeatedly hits the submit button on a form that is handled by a cgi script? does the browser ignore the click or does it fire off additional cgi responses? -- Jeff Saenz jeff@planetoid.net - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tnight at ironworx.com Fri Jun 30 16:04:48 2000 From: tnight at ironworx.com (Terry Nightingale) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: repeatedly hitting submit button In-Reply-To: <395D006C.B1F3AE3C@planetoid.net> Message-ID: On Fri, 30 Jun 2000, jeff wrote: > what happens when the user repeatedly hits the submit button on a form > that is handled by a cgi script? > > does the browser ignore the click or does it fire off additional cgi > responses? > To the best of my understanding, it's browser-specific. Most browsers cancel the current HTTP request (if any) and initiate a new HTTP request each time a submit button is pressed. It may be of interest to note that the server-side handling is server-specific as well. A well-behaved server will kill the CGI process when the first request is cancelled, and spawn a new CGI process to handle the additional request. Hope this helps... -- Terry Nightingale Principal Consultant, IronWorx LLC +1-425-649-9304(v) / +1-425-643-7112(f) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Fri Jun 30 18:27:33 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Discount Convention Pricing for SPUGsters Message-ID: <20000630162733.C14652@timji.consultix.wa.com> This note forwarded by Head Perl Monger "brian d foy" indicates that we SPUGsters, in our guise as Seattle.pm, still qualify for the discount pricing for the July OpenSource Conference in Monterey. ========================================================== | Tim Maher, Ph.D. Tel: (206) 781-UNIX | | SPUG Founder & Leader Email: spug@halcyon.com | | Seattle Perl Users Group HTTP: www.halcyon.com/spug | ========================================================== ----- Forwarded message from brian d foy ----- Date: Fri, 30 Jun 2000 18:15:05 -0400 (EDT) From: brian d foy Reply-To: brian d foy To: groups@lists.panix.com Subject: O'Reilly News Articles (fwd) Precedence: bulk here are some rumors to pass along :) ---------- Forwarded message ---------- Date: Fri, 30 Jun 2000 14:45:41 -0700 (PDT) From: Denise Olliffe To: brian@smithrenaud.com Subject: O'Reilly News Articles Advanced releases of the following O'Reilly titles will be made available at the Convention: - Building Linux Clusters - Programmin Perl, 3rd Edition (a.k.a. The Camel Book) - Perl for System Administration Please don't forget to remind your members about the O'Reilly Open Source Convention-July 17 - 20, in scenic Monterey, CA. O'Reilly is offering to extend the Early Bird pricing on Conference Sessions and Tutorials to our UG members by using the special promo code: 1010 when they register. Please let your members know to stop by and say hello if they attend the convention. I will be working at the O'Reilly User Group Program table located next to the bookstore. For more interesting articles, check out: www.oreilly.com under the news column. Thanks, Denise :) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Fri Jun 30 18:28:48 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: New O'Reilly Books Message-ID: <20000630162848.D14652@timji.consultix.wa.com> Hi there, Thought your group would be interested in these articles posted on the O'Reilly site: Carnegie Mellon University Perl Bring Everything Together-Quickly by Howard Wen & Scott Hill http://perl.oreilly.com/news/carnegie_0600.html Building Linux Clusters: Off-the-Shelf Supercomputing with David HM Spector by Bonnie Allen http://linux.oreilly.com/news/spector_0600.html ========================================================== | Tim Maher, Ph.D. Tel: (206) 781-UNIX | | SPUG Founder & Leader Email: spug@halcyon.com | | Seattle Perl Users Group HTTP: www.halcyon.com/spug | ========================================================== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From adroitmedia at hotmail.com Fri Jun 30 20:11:15 2000 From: adroitmedia at hotmail.com (Adroit Media) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Needs CGI Help Message-ID: <20000701011115.20301.qmail@hotmail.com> I have created some cgi/perl scripts from CGI/Perl Cookbook. (a book with numerous templates). (I am not a programmer). I spoke with Tim Maher and he suggested this approach may be antiquated and that I post a request here to meet with somebody (for a fee of course) who is up on Perl and CGI Scripting. Ken ________________________________________________________________________ Get Your Private, Free E-mail from MSN Hotmail at http://www.hotmail.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address From tim at consultix-inc.com Fri Jun 30 20:36:25 2000 From: tim at consultix-inc.com (Tim Maher/CONSULTIX) Date: Wed Aug 4 00:07:24 2004 Subject: SPUG: Needs CGI Help Message-ID: <20000630183625.A15043@timji.consultix.wa.com> >I have created some cgi/perl scripts from CGI/Perl Cookbook. (a book with >numerous templates). (I am not a programmer). > >I spoke with Tim Maher and he suggested this approach may be antiquated and >that I post a request here to meet with somebody (for a fee of course) who >is up on Perl and CGI Scripting. > >Ken To elaborate a bit, Ken has built a web page using "recipes" taken from a book, that use "formmail" and its relatives as the underlying CGI programs (I vaguely remember this program and its friends, from back around '94-95, if memory serves). He's finding that this approach forces him to create complicated HTML pages, and it's driving him crazy 8-} (We CGI.pm'ers would just write a "two-mode" Perl program, that would create the initial HTML form and also process submissions from it.) He's never heard of CGI.pm, and, not being a programmer, but rather a "cook", he wouldn't know what to do with it anyway! So he needs some help. Maybe somebody could re-write his application using CGI.pm, through a generic program that he could control by editing "configuration files", so he wouldn't need to touch the Perl stuff. He's got people suggesting to him that Perl is falling by the wayside, and the future of the Web lies in Active Server Pages and Visual Basic. Comments, please? ========================================================== | Tim Maher, Ph.D. Tel: (206) 781-UNIX | | SPUG Founder & Leader Email: spug@halcyon.com | | Seattle Perl Users Group HTTP: www.halcyon.com/spug | ========================================================== - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - POST TO: spug-list@pm.org PROBLEMS: owner-spug-list@pm.org Seattle Perl Users Group (SPUG) Home Page: http://www.halcyon.com/spug/ For Subscriptions, Email to majordomo@pm.org: ACTION spug-list EMAIL Replace ACTION by subscribe or unsubscribe, EMAIL by your Email address