From scytale at techie.com Sun Dec 2 12:45:22 2001 From: scytale at techie.com (Roger Vasquez) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Fw: Re: Question Message-ID: <20011202184523.10101.qmail@mail.com> Here is a suggestion from Professor Bernardi who lives in Tuscon. -----Original Message----- From: Daniel Bernardi Sent: Sun, 02 Dec 2001 09:05:23 -0700 To: Roger Vasquez Subject: Re: Question Yes... I really like a Mexican restaurant called, Mosaic Cafe. It's on the west side, Silverbell and Speedway area, about a ten minute drive from campus. Ens B Roger Vasquez wrote: > We will be taking Damion Conway to eat afterwards and since you live in Tuscon, I thought you might know of some good place to eat mexican food. Any suggestions? > -- > > _______________________________________________ > Sign-up for your own FREE Personalized E-mail at Mail.com > http://www.mail.com/?sr=signup > > 1 cent a minute calls anywhere in the U.S.! > > http://www.getpennytalk.com/cgi-bin/adforward.cgi?p_key=RG9853KJ&url=http://www.getpennytalk.com -- _______________________________________________ Sign-up for your own FREE Personalized E-mail at Mail.com http://www.mail.com/?sr=signup 1 cent a minute calls anywhere in the U.S.! http://www.getpennytalk.com/cgi-bin/adforward.cgi?p_key=RG9853KJ&url=http://www.getpennytalk.com From scytale at techie.com Sun Dec 2 12:45:22 2001 From: scytale at techie.com (Roger Vasquez) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Fw: Re: Question Message-ID: <20011202184523.10101.qmail@mail.com> Here is a suggestion from Professor Bernardi who lives in Tuscon. -----Original Message----- From: Daniel Bernardi Sent: Sun, 02 Dec 2001 09:05:23 -0700 To: Roger Vasquez Subject: Re: Question Yes... I really like a Mexican restaurant called, Mosaic Cafe. It's on the west side, Silverbell and Speedway area, about a ten minute drive from campus. Ens B Roger Vasquez wrote: > We will be taking Damion Conway to eat afterwards and since you live in Tuscon, I thought you might know of some good place to eat mexican food. Any suggestions? > -- > > _______________________________________________ > Sign-up for your own FREE Personalized E-mail at Mail.com > http://www.mail.com/?sr=signup > > 1 cent a minute calls anywhere in the U.S.! > > http://www.getpennytalk.com/cgi-bin/adforward.cgi?p_key=RG9853KJ&url=http://www.getpennytalk.com -- _______________________________________________ Sign-up for your own FREE Personalized E-mail at Mail.com http://www.mail.com/?sr=signup 1 cent a minute calls anywhere in the U.S.! http://www.getpennytalk.com/cgi-bin/adforward.cgi?p_key=RG9853KJ&url=http://www.getpennytalk.com From djmilesfamily at earthlink.net Wed Dec 5 17:43:32 2001 From: djmilesfamily at earthlink.net (Doug and Julie Miles) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Fwd: O'Reilly Offering Double Conference Discount to UGs Message-ID: <5.0.2.1.0.20011205164321.02c61580@mail.earthlink.net> >Date: Tue, 4 Dec 2001 17:10:39 -0800 (PST) >From: Denise Olliffe >To: djmilesfamily@earthlink.net >Subject: O'Reilly Offering Double Conference Discount to UGs > >Hello, > >In past newsletters, I've sent you information regarding the O'Reilly >Bioinformatics Technology Conference January 28-31, 2002--Tucson, AZ > >I'm writing with a reminder that Early Bird registration ends on >Friday, December 7th. If someone from your group was planning to >attend, please pass this message on. Because of the interest we're >seeing in the conference, there is no plan to extend this deadline. > >Your members receive 20% discount off registration. If they register >before the December 7th deadline, you'll get a double-discount. After >December 7th, the 20% discount applies only to standard conference >fees. Discount code is DSUG. > >For conference information, or to register, go to: >http://conferences.oreilly.com/biocon/ > >If you have any questions, please contact me. > >:) >Denise From doug.miles at bpxinternet.com Tue Dec 11 14:30:09 2001 From: doug.miles at bpxinternet.com (Doug Miles) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Damian's Diary Message-ID: <3C166CD1.5090600@bpxinternet.com> We're in Damian's Diary: http://yetanother.org/damian/diary_December_2001.html Right now, I'm waiting for confirmation on the facilities. As soon as I get that, I'll let the list know. We'll also firm up the restaurant and travel plans then. In other news... I'm planning to have a Phoenix.pm holiday party on the 20th. More information on that later... From Bryan.Lane at VITALPS.COM Tue Dec 11 15:32:31 2001 From: Bryan.Lane at VITALPS.COM (Bryan Lane) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Damian's Diary Message-ID: <219B26AF200FD411A11200805FE6EF2503B3F87F@tef00021.vitalps.com> Excellent! > -----Original Message----- > From: doug.miles@bpxinternet.com [SMTP:doug.miles@bpxinternet.com] > Sent: Tuesday, December 11, 2001 1:30 PM > To: Phoenix.pm > Subject: Phoenix.pm: Damian's Diary > > We're in Damian's Diary: > > http://yetanother.org/damian/diary_December_2001.html > > Right now, I'm waiting for confirmation on the facilities. As soon as I > get that, I'll let the list know. We'll also firm up the restaurant > and travel plans then. > > In other news... > I'm planning to have a Phoenix.pm holiday party on the 20th. More > information on that later... From doug.miles at bpxinternet.com Mon Dec 17 14:11:00 2001 From: doug.miles at bpxinternet.com (Doug Miles) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Meeting 12/20/2001 Message-ID: <3C1E5154.4010106@bpxinternet.com> Holiday Party social meeting! We'll be having a Phoenix.pm meeting Thursday, December 20th at 7:00PM. It will be held at Bowne, which is located at 1500 N. Central Avenue, which is on the Southwest corner of Central and McDowell. The parking lot is gated, so just press the button on the intercom, and tell the receptionist that you are there for the Perl meeting. Park in the lot that is straight ahead from the entrance on the South side of McDowell. Park in any uncovered, non-reserved space. Proceed to the main lobby, which is on the Northeast side of the parking lot. We'll be having a "geek" white elephant gift exchange. Bring any hardware/computer paraphernalia (working or not) you'd like to unload on some hapless victim. Please wrap the gift (or at least put it in a box) to increase the suspense. :) If you don't want to participate, you don't have to. You just won't get to take home any new useless^H^H^H^H^H^H^H^H cool stuff. ;) -- - Doug Don't anthropomorphize computers. They hate that. From phaedrus at illogics.org Tue Dec 18 00:16:10 2001 From: phaedrus at illogics.org (Scott Walters) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Meeting 12/20/2001 In-Reply-To: <3C1E5154.4010106@bpxinternet.com> Message-ID: YAY!! On Mon, 17 Dec 2001, Doug Miles wrote: > Holiday Party social meeting! > > We'll be having a Phoenix.pm meeting Thursday, December 20th at 7:00PM. > It will be held at Bowne, which is located at 1500 N. Central Avenue, > which is on the Southwest corner of Central and McDowell. The parking > lot is gated, so just press the button on the intercom, and tell the > receptionist that you are there for the Perl meeting. Park in the lot > that is straight ahead from the entrance on the South side of McDowell. > Park in any uncovered, non-reserved space. Proceed to the main lobby, > which is on the Northeast side of the parking lot. > > We'll be having a "geek" white elephant gift exchange. Bring any > hardware/computer paraphernalia (working or not) you'd like to unload on > some hapless victim. Please wrap the gift (or at least put it in a box) > to increase the suspense. :) If you don't want to participate, you > don't have to. You just won't get to take home any new > useless^H^H^H^H^H^H^H^H cool stuff. ;) > > -- > - Doug > > Don't anthropomorphize computers. They hate that. > > > > > > > > > > From phaedrus at illogics.org Tue Dec 18 01:32:10 2001 From: phaedrus at illogics.org (Scott Walters) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Meeting 12/20/2001 In-Reply-To: <3C1E5154.4010106@bpxinternet.com> Message-ID: "Computer programmer unemployment officially 7.8%" qq{ Yep, things are mighty bad. 12 months ago it was 1.7% unemployment. But is this figure accurate? Are people (now unemployed) who learned some ASP programming to cash in on the gold rush considered "computer programmers" for the purposes of these figures? Just as a point of clarifty, the unemployment rate for people who didn't graduate high school- always the highest by education- is 8.1%(!) Without doubt, no other "skilled" trade/profession has an unemployment rate even CLOSE to 7.8% right now. In constrast, the unemployment rate for college graduates is just 3.1%---- yet don't all of us know lots of people who have degrees and are jobless? Reference for statistics: http://www.informationweek.com/story/IWK20011213S0024 http://www.bls.gov/news.release/empsit.t03.htm }; from...: http://www.netslaves.com/cgi-bin/yabb/YaBB.pl?board=005&action=display&num=1008642210&start=1 On Mon, 17 Dec 2001, Doug Miles wrote: > Holiday Party social meeting! > > We'll be having a Phoenix.pm meeting Thursday, December 20th at 7:00PM. > It will be held at Bowne, which is located at 1500 N. Central Avenue, > which is on the Southwest corner of Central and McDowell. The parking > lot is gated, so just press the button on the intercom, and tell the > receptionist that you are there for the Perl meeting. Park in the lot > that is straight ahead from the entrance on the South side of McDowell. > Park in any uncovered, non-reserved space. Proceed to the main lobby, > which is on the Northeast side of the parking lot. > > We'll be having a "geek" white elephant gift exchange. Bring any > hardware/computer paraphernalia (working or not) you'd like to unload on > some hapless victim. Please wrap the gift (or at least put it in a box) > to increase the suspense. :) If you don't want to participate, you > don't have to. You just won't get to take home any new > useless^H^H^H^H^H^H^H^H cool stuff. ;) > > -- > - Doug > > Don't anthropomorphize computers. They hate that. > > > > > > > > > > From macnaughtan at hotmail.com Tue Dec 18 10:06:39 2001 From: macnaughtan at hotmail.com (Heather Macnaughtan) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Meeting 12/20/2001 Message-ID: I plan to attend. I may be bringing a guest as well. I've chosen a lovely gift from the dark recesses of the garage. I don't know what it is, but I'm sure someone really wants one! ;-) -Heather _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From sharding at ccbill.com Tue Dec 18 09:07:09 2001 From: sharding at ccbill.com (Shay Harding) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Meeting 12/20/2001 In-Reply-To: References: Message-ID: <200112181707.fBIH7Sf77235@ara.cwie.net> > On Mon, 17 Dec 2001, Doug Miles wrote: > > Holiday Party social meeting! >> > > We'll be having a "geek" white elephant gift exchange. Bring any > > hardware/computer paraphernalia (working or not) you'd like to unload on > > some hapless victim. Please wrap the gift (or at least put it in a box) > > to increase the suspense. :) If you don't want to participate, you > > don't have to. You just won't get to take home any new > > useless^H^H^H^H^H^H^H^H cool stuff. ;) > > > > -- > > - Doug I sure hope to leave work early enough to attend and will even try to remember to bring one of my many items I have laying around :) Shay From tran_fors at yahoo.com Tue Dec 18 15:06:26 2001 From: tran_fors at yahoo.com (Tran Forsythe) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Meeting 12/20/2001 In-Reply-To: <3C1E5154.4010106@bpxinternet.com> Message-ID: <20011218210626.12726.qmail@web14105.mail.yahoo.com> I'll be there ;) --- Doug Miles wrote: > Holiday Party social meeting! > > We'll be having a Phoenix.pm meeting Thursday, > December 20th at 7:00PM. __________________________________________________ Do You Yahoo!? Check out Yahoo! Shopping and Yahoo! Auctions for all of your unique holiday gifts! Buy at http://shopping.yahoo.com or bid at http://auctions.yahoo.com From doug.miles at bpxinternet.com Thu Dec 20 13:57:26 2001 From: doug.miles at bpxinternet.com (Doug Miles) Date: Thu Aug 5 00:16:33 2004 Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 Message-ID: <3C2242A6.8010207@bpxinternet.com> Please RSVP if you haven't already. Please let me know if you are going to be late, as I have to be in the lobby to let you in. Holiday Party social meeting! We'll be having a Phoenix.pm meeting Thursday, December 20th at 7:00PM. It will be held at Bowne, which is located at 1500 N. Central Avenue, which is on the Southwest corner of Central and McDowell. The parking lot is gated, so just press the button on the intercom, and tell the receptionist that you are there for the Perl meeting. Park in the lot that is straight ahead from the entrance on the South side of McDowell. Park in any uncovered, non-reserved space. Proceed to the main lobby, which is on the Northeast side of the parking lot. We'll be having a "geek" white elephant gift exchange. Bring any hardware/computer paraphernalia (working or not) you'd like to unload on some hapless victim. Please wrap the gift (or at least put it in a box) to increase the suspense. :) If you don't want to participate, you don't have to. You just won't get to take home any new useless^H^H^H^H^H^H^H^H cool stuff. ;) -- - Doug Don't anthropomorphize computers. They hate that. From phaedrus at illogics.org Thu Dec 20 14:28:17 2001 From: phaedrus at illogics.org (Scott Walters) Date: Thu Aug 5 00:16:33 2004 Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 In-Reply-To: <3C2242A6.8010207@bpxinternet.com> Message-ID: I'm coming, I'll be there on time, I'm bringing Heather and a surprise: her little sister. I can't wait to see who wins Heather's little sister in the white-elephant.... On Thu, 20 Dec 2001, Doug Miles wrote: > Please RSVP if you haven't already. Please let me know if you are going > to be late, as I have to be in the lobby to let you in. > > Holiday Party social meeting! > > We'll be having a Phoenix.pm meeting Thursday, December 20th at 7:00PM. > It will be held at Bowne, which is located at 1500 N. Central Avenue, > which is on the Southwest corner of Central and McDowell. The parking > lot is gated, so just press the button on the intercom, and tell the > receptionist that you are there for the Perl meeting. Park in the lot > that is straight ahead from the entrance on the South side of McDowell. > Park in any uncovered, non-reserved space. Proceed to the main lobby, > which is on the Northeast side of the parking lot. > > We'll be having a "geek" white elephant gift exchange. Bring any > hardware/computer paraphernalia (working or not) you'd like to unload on > some hapless victim. Please wrap the gift (or at least put it in a box) > to increase the suspense. :) If you don't want to participate, you > don't have to. You just won't get to take home any new > useless^H^H^H^H^H^H^H^H cool stuff. ;) > > -- > - Doug > > Don't anthropomorphize computers. They hate that. > > > > > > > > > > > > From macnaughtan at hotmail.com Thu Dec 20 14:44:08 2001 From: macnaughtan at hotmail.com (Heather Macnaughtan) Date: Thu Aug 5 00:16:33 2004 Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 Message-ID: hey, my sister's worth more than $10!!! Pick another gift! :-P _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From Bryan.Lane at VITALPS.COM Thu Dec 20 14:50:33 2001 From: Bryan.Lane at VITALPS.COM (Bryan Lane) Date: Thu Aug 5 00:16:33 2004 Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 Message-ID: <219B26AF200FD411A11200805FE6EF2503B3F8DF@tef00021.vitalps.com> I will be there. I should be on time, but probably not early. > -----Original Message----- > From: doug.miles@bpxinternet.com [SMTP:doug.miles@bpxinternet.com] > Sent: Thursday, December 20, 2001 12:57 PM > To: Phoenix.pm > Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 > > Please RSVP if you haven't already. Please let me know if you are going > to be late, as I have to be in the lobby to let you in. > > Holiday Party social meeting! > > We'll be having a Phoenix.pm meeting Thursday, December 20th at 7:00PM. > It will be held at Bowne, which is located at 1500 N. Central Avenue, > which is on the Southwest corner of Central and McDowell. The parking > lot is gated, so just press the button on the intercom, and tell the > receptionist that you are there for the Perl meeting. Park in the lot > that is straight ahead from the entrance on the South side of McDowell. > Park in any uncovered, non-reserved space. Proceed to the main lobby, > which is on the Northeast side of the parking lot. > > We'll be having a "geek" white elephant gift exchange. Bring any > hardware/computer paraphernalia (working or not) you'd like to unload on > some hapless victim. Please wrap the gift (or at least put it in a box) > to increase the suspense. :) If you don't want to participate, you > don't have to. You just won't get to take home any new > useless^H^H^H^H^H^H^H^H cool stuff. ;) > > -- > - Doug > > Don't anthropomorphize computers. They hate that. > > > > > > > > > > From whitneyt at agcs.com Thu Dec 20 14:59:43 2001 From: whitneyt at agcs.com (Thomas Whitney) Date: Thu Aug 5 00:16:33 2004 Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 References: <3C2242A6.8010207@bpxinternet.com> Message-ID: <3C22513F.24F1F405@agcs.com> Ill be there. Tom Doug Miles wrote: > Please RSVP if you haven't already. Please let me know if you are going > to be late, as I have to be in the lobby to let you in. > > Holiday Party social meeting! > > We'll be having a Phoenix.pm meeting Thursday, December 20th at 7:00PM. > It will be held at Bowne, which is located at 1500 N. Central Avenue, > which is on the Southwest corner of Central and McDowell. The parking > lot is gated, so just press the button on the intercom, and tell the > receptionist that you are there for the Perl meeting. Park in the lot > that is straight ahead from the entrance on the South side of McDowell. > Park in any uncovered, non-reserved space. Proceed to the main lobby, > which is on the Northeast side of the parking lot. > > We'll be having a "geek" white elephant gift exchange. Bring any > hardware/computer paraphernalia (working or not) you'd like to unload on > some hapless victim. Please wrap the gift (or at least put it in a box) > to increase the suspense. :) If you don't want to participate, you > don't have to. You just won't get to take home any new > useless^H^H^H^H^H^H^H^H cool stuff. ;) > > -- > - Doug > > Don't anthropomorphize computers. They hate that. From Craig.Frooninckx at acxiom.com Thu Dec 20 14:59:45 2001 From: Craig.Frooninckx at acxiom.com (Frooninckx Craig - cfroon) Date: Thu Aug 5 00:16:33 2004 Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 Message-ID: <6B681776AD07ED4EBEEA5D961E431088E60882@phxmx02.Corp.Acxiom.net> Is she cute?? -----Original Message----- From: Heather Macnaughtan [mailto:macnaughtan@hotmail.com] Sent: Thursday, December 20, 2001 1:44 PM To: phoenix-pm-list@happyfunball.pm.org Subject: Re: Reminder: Phoenix.pm: Meeting 12/20/2001 hey, my sister's worth more than $10!!! Pick another gift! :-P _________________________________________________________________ Chat with friends online, try MSN Messenger: http://messenger.msn.com From edelweiss at qwest.net Thu Dec 20 15:29:48 2001 From: edelweiss at qwest.net (EdelSys Consulting) Date: Thu Aug 5 00:16:33 2004 Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 In-Reply-To: <6B681776AD07ED4EBEEA5D961E431088E60882@phxmx02.Corp.Acxiom .net> Message-ID: <3.0.6.32.20011220142948.0079a890@pop.phnx.uswest.net> Uh oh. @!%$ At 01:59 PM 12/20/01 -0700, you wrote: >Is she cute?? > >-----Original Message----- >From: Heather Macnaughtan [mailto:macnaughtan@hotmail.com] >Sent: Thursday, December 20, 2001 1:44 PM >To: phoenix-pm-list@happyfunball.pm.org >Subject: Re: Reminder: Phoenix.pm: Meeting 12/20/2001 > > >hey, my sister's worth more than $10!!! Pick another gift! :-P > > > >_________________________________________________________________ >Chat with friends online, try MSN Messenger: http://messenger.msn.com > > From macnaughtan at hotmail.com Thu Dec 20 15:02:44 2001 From: macnaughtan at hotmail.com (Heather Macnaughtan) Date: Thu Aug 5 00:16:33 2004 Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 Message-ID: Of course she's cute; she's my sister! _________________________________________________________________ Join the world’s largest e-mail service with MSN Hotmail. http://www.hotmail.com From phaedrus at illogics.org Thu Dec 20 14:51:34 2001 From: phaedrus at illogics.org (Scott Walters) Date: Thu Aug 5 00:16:33 2004 Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 In-Reply-To: <6B681776AD07ED4EBEEA5D961E431088E60882@phxmx02.Corp.Acxiom.net> Message-ID: she looks like Heather. you tell me. On Thu, 20 Dec 2001, Frooninckx Craig - cfroon wrote: > Is she cute?? > > -----Original Message----- > From: Heather Macnaughtan [mailto:macnaughtan@hotmail.com] > Sent: Thursday, December 20, 2001 1:44 PM > To: phoenix-pm-list@happyfunball.pm.org > Subject: Re: Reminder: Phoenix.pm: Meeting 12/20/2001 > > > hey, my sister's worth more than $10!!! Pick another gift! :-P > > > > _________________________________________________________________ > Chat with friends online, try MSN Messenger: http://messenger.msn.com > From Craig.Frooninckx at acxiom.com Thu Dec 20 15:27:48 2001 From: Craig.Frooninckx at acxiom.com (Frooninckx Craig - cfroon) Date: Thu Aug 5 00:16:33 2004 Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 Message-ID: <6B681776AD07ED4EBEEA5D961E431088E60883@phxmx02.Corp.Acxiom.net> Heather, I don't even know what you look like.... -----Original Message----- From: Heather Macnaughtan [mailto:macnaughtan@hotmail.com] Sent: Thursday, December 20, 2001 2:03 PM To: phoenix-pm-list@happyfunball.pm.org Subject: RE: Reminder: Phoenix.pm: Meeting 12/20/2001 Of course she's cute; she's my sister! _________________________________________________________________ Join the world's largest e-mail service with MSN Hotmail. http://www.hotmail.com From macnaughtan at hotmail.com Thu Dec 20 15:32:50 2001 From: macnaughtan at hotmail.com (Heather Macnaughtan) Date: Thu Aug 5 00:16:33 2004 Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 Message-ID: Still, I'm not gonna say she's a dog... ;-) >Heather, >I don't even know what you look like.... > >-----Original Message----- >From: Heather Macnaughtan [mailto:macnaughtan@hotmail.com] >Sent: Thursday, December 20, 2001 2:03 PM >To: phoenix-pm-list@happyfunball.pm.org >Subject: RE: Reminder: Phoenix.pm: Meeting 12/20/2001 > > > >Of course she's cute; she's my sister! > >_________________________________________________________________ >Join the world's largest e-mail service with MSN Hotmail. >http://www.hotmail.com _________________________________________________________________ Send and receive Hotmail on your mobile device: http://mobile.msn.com From lajandy at yahoo.com Thu Dec 20 15:59:47 2001 From: lajandy at yahoo.com (Andrew Johnson) Date: Thu Aug 5 00:16:33 2004 Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 In-Reply-To: <3C2242A6.8010207@bpxinternet.com> Message-ID: <20011220215947.64600.qmail@web10104.mail.yahoo.com> --- Doug Miles wrote: > Please RSVP if you haven't already. Please let me know if you are > going > to be late, as I have to be in the lobby to let you in. > > Holiday Party social meeting! > > We'll be having a Phoenix.pm meeting Thursday, December 20th at > 7:00PM. I'm coming, and I *should* be on time. ===== __________________________________________________ Do You Yahoo!? Check out Yahoo! Shopping and Yahoo! Auctions for all of your unique holiday gifts! Buy at http://shopping.yahoo.com or bid at http://auctions.yahoo.com From sharding at ccbill.com Thu Dec 20 18:14:17 2001 From: sharding at ccbill.com (Shay Harding) Date: Thu Aug 5 00:16:33 2004 Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 References: <3C2242A6.8010207@bpxinternet.com> Message-ID: <002701c189b4$711366a0$0301a8c0@poria1.az.home.com> > Please RSVP if you haven't already. Please let me know if you are going > to be late, as I have to be in the lobby to let you in. > > - Doug Unfortunately I will not be attending. Not going to be able to leave work early enough. Hope to make the next meeting though. Shay From A16499 at motorola.com Fri Dec 21 11:20:55 2001 From: A16499 at motorola.com (Li Guoya-A16499) Date: Thu Aug 5 00:16:33 2004 Subject: Reminder: Phoenix.pm: Meeting 12/20/2001 Message-ID: <07077F6C2A38D511920800D0B7821B3234FDDA@il06exm01.corp.mot.com> Hi, I need a help from all of you since I am a junior perl programmer. Thank you in advance. I need to get modified date from a remote server through ftp. That means: I need to ftp a file and also I need the modified date of that file from a remote server. Any one can help me?? Thank you very much. Merry Christmas and Happy New Year, Ho, Ho, Ho,... guoya -----Original Message----- From: Shay Harding [mailto:sharding@ccbill.com] Sent: Thursday, December 20, 2001 5:14 PM To: phoenix-pm-list@happyfunball.pm.org Subject: Re: Reminder: Phoenix.pm: Meeting 12/20/2001 > Please RSVP if you haven't already. Please let me know if you are going > to be late, as I have to be in the lobby to let you in. > > - Doug Unfortunately I will not be attending. Not going to be able to leave work early enough. Hope to make the next meeting though. Shay From doug.miles at bpxinternet.com Fri Dec 21 11:43:08 2001 From: doug.miles at bpxinternet.com (Doug Miles) Date: Thu Aug 5 00:16:33 2004 Subject: Net::FTP was: (Re: Reminder: Phoenix.pm: Meeting 12/20/2001) References: <07077F6C2A38D511920800D0B7821B3234FDDA@il06exm01.corp.mot.com> Message-ID: <3C2374AC.8000402@bpxinternet.com> Li Guoya-A16499 wrote: > Hi, I need a help from all of you since I am a junior perl programmer. Thank you in advance. > I need to get modified date from a remote server through ftp. That means: I need to ftp a file and also I need the modified date of that file from a remote server. Any one can help me?? > Thank you very much. > Merry Christmas and Happy New Year, Ho, Ho, Ho,... > guoya I would check out Net::FTP from CPAN. From the man page: mdtm ( FILE ) Returns the modification time of the given file I haven't used this before myself, but it looks like what you need. From A16499 at motorola.com Fri Dec 21 12:40:07 2001 From: A16499 at motorola.com (Li Guoya-A16499) Date: Thu Aug 5 00:16:33 2004 Subject: :FTP was: (Re: Reminder: Phoenix.pm: Meeting 12/20/2001) Message-ID: <07077F6C2A38D511920800D0B7821B3234FDDB@il06exm01.corp.mot.com> I look at Net::FTP, I didn't find mdtm. I'll further study this module as we have this module at home already. But I check Net::SFTP::Atributes, there is mtime($value), for getting or seeting last modified time. Thank you very much. -----Original Message----- From: doug.miles@bpxinternet.com [mailto:doug.miles@bpxinternet.com] Sent: Friday, December 21, 2001 10:43 AM To: phoenix-pm-list@happyfunball.pm.org Subject: Net::FTP was: (Re: Reminder: Phoenix.pm: Meeting 12/20/2001) Li Guoya-A16499 wrote: > Hi, I need a help from all of you since I am a junior perl programmer. Thank you in advance. > I need to get modified date from a remote server through ftp. That means: I need to ftp a file and also I need the modified date of that file from a remote server. Any one can help me?? > Thank you very much. > Merry Christmas and Happy New Year, Ho, Ho, Ho,... > guoya I would check out Net::FTP from CPAN. From the man page: mdtm ( FILE ) Returns the modification time of the given file I haven't used this before myself, but it looks like what you need. From sharding at ccbill.com Sat Dec 22 16:46:45 2001 From: sharding at ccbill.com (Shay Harding) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Attribute::Handlers and BEGIN blocks -- question(s) Message-ID: <01122215464503.02784@local222> Hello all, Have a question for anyone that might be familiar with Attribute::Handlers module. Even if you're not familiar maybe you can provide insight into why the following is happening... Ok, first BEGIN blocks should be evaluated before the rest of the script, FIFO order. So the following: #!/usr/bin/perl print "Top of script\n"; BEGIN{ print "BEGIN 1\n"; } print "Middle\n"; BEGIN{ print "BEGIN 2\n"; } will print: BEGIN 1 BEGIN 2 Top of script Middle Now take the following code: #!/usr/bin/perl my $test : Test; #set an attribute for variable print "Top\n"; BEGIN{ print "In BEGIN 1\n"; use Attribute::Handlers; sub Test($;) : ATTR(SCALAR, BEGIN) { print "In profiled sub\n"; } } print "Middle\n"; BEGIN{ print "In BEGIN 2\n"; } This gives the following error: Invalid SCALAR attribute: Test at t.pl line 3 BEGIN failed--compilation aborted at t.pl line 3. which I really don't understand as it seems it is parsing '$test : Test;' before the BEGIN blocks? I try to assign $test right after the attribute setting and display it within the BEGIN blocks but under -w gives the following (which I would expect): Use of uninitialized value in concatenation (.) at t.pl line 9. because $test should not exist within the BEGIN block meaning it hasn't yet been looked at by the compiler. Why then do I get the 'Invalid SCALAR arttribute' error? The order of processing in the above code is: Attribute::Handlers::import BEGIN 1 BEGIN 2 script Which means the atribute handler Test should be parsed before the assignment of $test... I know I can fix it by moving the assignment but I'm just curoius as to why it is happening. Shay From phaedrus at illogics.org Sat Dec 22 18:04:09 2001 From: phaedrus at illogics.org (Scott Walters) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Attribute::Handlers and BEGIN blocks -- question(s) In-Reply-To: <01122215464503.02784@local222> Message-ID: Hi Shay, On Sat, 22 Dec 2001, Shay Harding wrote: > > Now take the following code: > > #!/usr/bin/perl > > my $test : Test; #set an attribute for variable > > print "Top\n"; > > BEGIN{ > print "In BEGIN 1\n"; > use Attribute::Handlers; > sub Test($;) : ATTR(SCALAR, BEGIN) { > print "In profiled sub\n"; > } > } > > print "Middle\n"; > > BEGIN{ > print "In BEGIN 2\n"; > } > > > This gives the following error: > > Invalid SCALAR attribute: Test at t.pl line 3 > BEGIN failed--compilation aborted at t.pl line 3. > I'm going to take a stab in the dark here, even though I don't know what any of this stuff is ;) Even though, at line 3, nothing is being executed, it's still being tokenized, and untill that 'use' is hit, that syntax isn't valid. As soon as the use is hit, the syntax for ':' is introduced, and it can parse that. I'm assuming ':' isn't a normal operator and your module here does operator overloading? After everything is parsed (and not yet run), BEGIN and use's run, then everything else runs, if memory serves (mecury relay lines - rusty). > > which I really don't understand as it seems it is parsing '$test : Test;' > before the BEGIN blocks? I try to assign $test right after the attribute > setting and display it within the BEGIN blocks but under -w gives the > following (which I would expect): > > Use of uninitialized value in concatenation (.) at t.pl line 9. -w doesn't run the normal code path, but does still run BEGIN and use's. > > because $test should not exist within the BEGIN block meaning it hasn't yet > been looked at by the compiler. > > Why then do I get the 'Invalid SCALAR arttribute' error? The order of > processing in the above code is: > > Attribute::Handlers::import > BEGIN 1 > BEGIN 2 > script > > Which means the atribute handler Test should be parsed before the assignment > of $test... > > I know I can fix it by moving the assignment but I'm just curoius as to why > it is happening. > > > Shay > Let me know if I've completely missed the point... -scott From djmilesfamily at earthlink.net Sun Dec 23 20:59:56 2001 From: djmilesfamily at earthlink.net (Doug and Julie Miles) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Perl contains the lambda-calculus Message-ID: <5.0.2.1.0.20011223195822.02eecdd0@mail.earthlink.net> Since we were discussing this on Thursday, I thought this might be of interest: http://perl.plover.com/lambda/ From djmilesfamily at earthlink.net Sun Dec 23 21:15:01 2001 From: djmilesfamily at earthlink.net (Doug and Julie Miles) Date: Thu Aug 5 00:16:33 2004 Subject: Phoenix.pm: Attribute::Handlers and BEGIN blocks -- question(s) In-Reply-To: <01122215464503.02784@local222> Message-ID: <5.0.2.1.0.20011223200256.02efb870@mail.earthlink.net> At 03:46 PM 12/22/01 -0700, you wrote: >Hello all, > >Have a question for anyone that might be familiar with Attribute::Handlers >module. Even if you're not familiar maybe you can provide insight into why >the following is happening... > >Ok, first BEGIN blocks should be evaluated before the rest of the script, >FIFO order. So the following: > > >#!/usr/bin/perl > >print "Top of script\n"; > >BEGIN{ > print "BEGIN 1\n"; >} > >print "Middle\n"; > >BEGIN{ > print "BEGIN 2\n"; >} > > >will print: > >BEGIN 1 >BEGIN 2 >Top of script >Middle > > >Now take the following code: > >#!/usr/bin/perl > > my $test : Test; #set an attribute for variable > > print "Top\n"; > > BEGIN{ > print "In BEGIN 1\n"; > use Attribute::Handlers; > sub Test($;) : ATTR(SCALAR, BEGIN) { > print "In profiled sub\n"; > } > } > > print "Middle\n"; > > BEGIN{ > print "In BEGIN 2\n"; > } > > >This gives the following error: > >Invalid SCALAR attribute: Test at t.pl line 3 >BEGIN failed--compilation aborted at t.pl line 3. > > >which I really don't understand as it seems it is parsing '$test : Test;' >before the BEGIN blocks? I try to assign $test right after the attribute >setting and display it within the BEGIN blocks but under -w gives the >following (which I would expect): > >Use of uninitialized value in concatenation (.) at t.pl line 9. > >because $test should not exist within the BEGIN block meaning it hasn't yet >been looked at by the compiler. > >Why then do I get the 'Invalid SCALAR arttribute' error? The order of >processing in the above code is: > >Attribute::Handlers::import >BEGIN 1 >BEGIN 2 >script > >Which means the atribute handler Test should be parsed before the assignment >of $test... > >I know I can fix it by moving the assignment but I'm just curoius as to why >it is happening. I'm not familiar with Attribute::Handlers, so take this with a grain of salt... I checked Programming Perl 3rd Ed., and thus spake the camel (on page 465): BEGIN blocks are handed off to the interpreter to be RUN as as(sic) soon as they are parsed, which effectively runs them in FIFO order (first in, first out). (Emphasis mine) I would guess that Attribute::Handlers is playing some magic with Perl's syntax, and if that syntax is used before the "use Attribute::Handlers" (which is treated like a BEGIN), the perl compiler will barf on the unrecognized syntax. So, compile wise, it should be this: script BEGIN 1 Attribute::Handlers::import script BEGIN 2 I'm in over my head, so I could be wrong. Does anyone else want to confirm or deny this? From phaedrus at illogics.org Sun Dec 23 22:55:13 2001 From: phaedrus at illogics.org (Scott Walters) Date: Thu Aug 5 00:16:34 2004 Subject: Phoenix.pm: Attribute::Handlers and BEGIN blocks -- question(s) In-Reply-To: <5.0.2.1.0.20011223200256.02efb870@mail.earthlink.net> Message-ID: Doug, Too lazy to look at the module, but that was my suspicion exactly ;) In other news, anyone else see the Slashdot link re: Intel & Oregon vs Randal Schwartz? http://slashdot.org/yro/01/12/23/2145228.shtml Hmm. Felony to do "anything unauthorized on a computer". That gives ya warm fuzzies... Thanks for the link, Doug. http://www.cs.oberlin.edu/classes/dragn/labs/combinators/combinators11.html -- on currying specificly. -scott On Sun, 23 Dec 2001, Doug and Julie Miles wrote: > At 03:46 PM 12/22/01 -0700, you wrote: > >Hello all, > > > >Have a question for anyone that might be familiar with Attribute::Handlers > >module. Even if you're not familiar maybe you can provide insight into why > >the following is happening... > > > >Ok, first BEGIN blocks should be evaluated before the rest of the script, > >FIFO order. So the following: > > > > > >#!/usr/bin/perl > > > >print "Top of script\n"; > > > >BEGIN{ > > print "BEGIN 1\n"; > >} > > > >print "Middle\n"; > > > >BEGIN{ > > print "BEGIN 2\n"; > >} > > > > > >will print: > > > >BEGIN 1 > >BEGIN 2 > >Top of script > >Middle > > > > > >Now take the following code: > > > >#!/usr/bin/perl > > > > my $test : Test; #set an attribute for variable > > > > print "Top\n"; > > > > BEGIN{ > > print "In BEGIN 1\n"; > > use Attribute::Handlers; > > sub Test($;) : ATTR(SCALAR, BEGIN) { > > print "In profiled sub\n"; > > } > > } > > > > print "Middle\n"; > > > > BEGIN{ > > print "In BEGIN 2\n"; > > } > > > > > >This gives the following error: > > > >Invalid SCALAR attribute: Test at t.pl line 3 > >BEGIN failed--compilation aborted at t.pl line 3. > > > > > >which I really don't understand as it seems it is parsing '$test : Test;' > >before the BEGIN blocks? I try to assign $test right after the attribute > >setting and display it within the BEGIN blocks but under -w gives the > >following (which I would expect): > > > >Use of uninitialized value in concatenation (.) at t.pl line 9. > > > >because $test should not exist within the BEGIN block meaning it hasn't yet > >been looked at by the compiler. > > > >Why then do I get the 'Invalid SCALAR arttribute' error? The order of > >processing in the above code is: > > > >Attribute::Handlers::import > >BEGIN 1 > >BEGIN 2 > >script > > > >Which means the atribute handler Test should be parsed before the assignment > >of $test... > > > >I know I can fix it by moving the assignment but I'm just curoius as to why > >it is happening. > > I'm not familiar with Attribute::Handlers, so take this with a grain of salt... > > I checked Programming Perl 3rd Ed., and thus spake the camel (on page 465): > > BEGIN blocks are handed off to the interpreter to be RUN as as(sic) soon > as they are > parsed, which effectively runs them in FIFO order (first in, first > out). (Emphasis mine) > > I would guess that Attribute::Handlers is playing some magic with Perl's > syntax, and if that syntax is used before the "use Attribute::Handlers" > (which is treated like a BEGIN), the perl compiler will barf on the > unrecognized syntax. So, compile wise, it should be this: > > script > BEGIN 1 > Attribute::Handlers::import > script > BEGIN 2 > > I'm in over my head, so I could be wrong. Does anyone else want to confirm > or deny this? > > From sharding at ccbill.com Mon Dec 24 01:21:54 2001 From: sharding at ccbill.com (Shay Harding) Date: Thu Aug 5 00:16:34 2004 Subject: Phoenix.pm: Attribute::Handlers and BEGIN blocks -- question(s) In-Reply-To: <5.0.2.1.0.20011223200256.02efb870@mail.earthlink.net> References: <5.0.2.1.0.20011223200256.02efb870@mail.earthlink.net> Message-ID: <01122400215404.02784@local222> This got so long I'm going to post up top so you don't have to scroll... After some investigation it seems both of you are kind of correct. The $test : Test; was getting parsed before the BEGIN blocks, as it is checked at compile time since this is valid Perl syntax and is something I did not even know existed. The ':' is used to set attributes for subroutines as 'locked' or 'method'. >From perldelta, perl 5.6: --------------------------------------------------------- New syntax for declaring subroutine attributes Formerly, if you wanted to mark a subroutine as being a method call or as requiring an automatic lock() when it is entered, you had to declare that with a `use attrs' pragma in the body of the subroutine. That can now be accomplished with declaration syntax, like this: sub mymethod : locked method ; ... sub mymethod : locked method { ... } sub othermethod :locked :method ; ... sub othermethod :locked :method { ... } (Note how only the first `:' is mandatory, and whitespace surrounding the `:' is optional.) AutoSplit.pm and SelfLoader.pm have been updated to keep the attributes with the stubs they provide. See the attributes manpage. -------------------------------------------------------------- >From the attrs.pm pod: ----------------------------------------------------- =head1 DESCRIPTION NOTE: Use of this pragma is deprecated. Use the syntax sub foo : locked method { } to declare attributes instead. See also L. This pragma lets you set and get attributes for subroutines. Setting attributes takes place at compile time; trying to set invalid attribute names causes a compile-time error. Calling C on a subroutine reference or name returns its list of attribute names. Notice that C is not exported. ------------------------------------------------------ So it seems these attributes were orignally entered in for use with threads. Learn something new everyday :) Attribute::Handlers seems to take this a step further and can be applied to subroutined, scalars, hashes, arrays, etc. Shay On Sunday 23 December 2001 20:15, you wrote: > At 03:46 PM 12/22/01 -0700, you wrote: > >Hello all, > > > >Have a question for anyone that might be familiar with Attribute::Handlers > >module. Even if you're not familiar maybe you can provide insight into why > >the following is happening... > > > >Ok, first BEGIN blocks should be evaluated before the rest of the script, > >FIFO order. So the following: > > > > > >#!/usr/bin/perl > > > >print "Top of script\n"; > > > >BEGIN{ > > print "BEGIN 1\n"; > >} > > > >print "Middle\n"; > > > >BEGIN{ > > print "BEGIN 2\n"; > >} > > > > > >will print: > > > >BEGIN 1 > >BEGIN 2 > >Top of script > >Middle > > > > > >Now take the following code: > > > >#!/usr/bin/perl > > > > my $test : Test; #set an attribute for variable > > > > print "Top\n"; > > > > BEGIN{ > > print "In BEGIN 1\n"; > > use Attribute::Handlers; > > sub Test($;) : ATTR(SCALAR, BEGIN) { > > print "In profiled sub\n"; > > } > > } > > > > print "Middle\n"; > > > > BEGIN{ > > print "In BEGIN 2\n"; > > } > > > > > >This gives the following error: > > > >Invalid SCALAR attribute: Test at t.pl line 3 > >BEGIN failed--compilation aborted at t.pl line 3. > > > > > >which I really don't understand as it seems it is parsing '$test : Test;' > >before the BEGIN blocks? I try to assign $test right after the attribute > >setting and display it within the BEGIN blocks but under -w gives the > >following (which I would expect): > > > >Use of uninitialized value in concatenation (.) at t.pl line 9. > > > >because $test should not exist within the BEGIN block meaning it hasn't > > yet been looked at by the compiler. > > > >Why then do I get the 'Invalid SCALAR arttribute' error? The order of > >processing in the above code is: > > > >Attribute::Handlers::import > >BEGIN 1 > >BEGIN 2 > >script > > > >Which means the atribute handler Test should be parsed before the > > assignment of $test... > > > >I know I can fix it by moving the assignment but I'm just curoius as to > > why it is happening. > > I'm not familiar with Attribute::Handlers, so take this with a grain of > salt... > > I checked Programming Perl 3rd Ed., and thus spake the camel (on page 465): > > BEGIN blocks are handed off to the interpreter to be RUN as as(sic) soon > as they are > parsed, which effectively runs them in FIFO order (first in, first > out). (Emphasis mine) > > I would guess that Attribute::Handlers is playing some magic with Perl's > syntax, and if that syntax is used before the "use Attribute::Handlers" > (which is treated like a BEGIN), the perl compiler will barf on the > unrecognized syntax. So, compile wise, it should be this: > > script > BEGIN 1 > Attribute::Handlers::import > script > BEGIN 2 > > I'm in over my head, so I could be wrong. Does anyone else want to confirm > or deny this? From doug.miles at bpxinternet.com Thu Dec 27 11:07:33 2001 From: doug.miles at bpxinternet.com (Doug Miles) Date: Thu Aug 5 00:16:34 2004 Subject: Phoenix.pm: Attribute::Handlers and BEGIN blocks -- question(s) References: <5.0.2.1.0.20011223200256.02efb870@mail.earthlink.net> <01122400215404.02784@local222> Message-ID: <3C2B5555.9050407@bpxinternet.com> Shay Harding wrote: > This got so long I'm going to post up top so you don't have to scroll... > > After some investigation it seems both of you are kind of correct. The > > $test : Test; > > was getting parsed before the BEGIN blocks, as it is checked at compile time > since this is valid Perl syntax and is something I did not even know existed. Thanks! I didn't know that was valid either. > The ':' is used to set attributes for subroutines as 'locked' or 'method'. >>From perldelta, perl 5.6: > > --------------------------------------------------------- > New syntax for declaring subroutine attributes > > Formerly, if you wanted to mark a subroutine as being a method call or as > requiring an automatic lock() when it is entered, you had to declare that > with a `use attrs' pragma in the body of the subroutine. That can now be > accomplished with declaration syntax, like this: > > sub mymethod : locked method ; > ... > sub mymethod : locked method { > ... > } > > sub othermethod :locked :method ; > ... > sub othermethod :locked :method { > ... > } > > (Note how only the first `:' is mandatory, and whitespace surrounding > the `:' is optional.) > > AutoSplit.pm and SelfLoader.pm have been updated to keep the attributes with > the stubs they provide. See the attributes manpage. > -------------------------------------------------------------- > >>From the attrs.pm pod: > > ----------------------------------------------------- > =head1 DESCRIPTION > > NOTE: Use of this pragma is deprecated. Use the syntax > > sub foo : locked method { } > > to declare attributes instead. See also L. > > This pragma lets you set and get attributes for subroutines. > Setting attributes takes place at compile time; trying to set > invalid attribute names causes a compile-time error. Calling > C on a subroutine reference or name returns its list > of attribute names. Notice that C is not exported. > ------------------------------------------------------ > > So it seems these attributes were orignally entered in for use with threads. > Learn something new everyday :) > > Attribute::Handlers seems to take this a step further and can be applied to > subroutined, scalars, hashes, arrays, etc. > > From phaedrus at illogics.org Fri Dec 28 00:15:08 2001 From: phaedrus at illogics.org (Scott Walters) Date: Thu Aug 5 00:16:34 2004 Subject: Phoenix.pm: socket, select & sysread questions In-Reply-To: <3C2B5555.9050407@bpxinternet.com> Message-ID: Sorry to bug you folks, but I'm stumped. Normally when I'm completely stuck, I nuke the offending code and recode it differently. In this case, select() is the only thing (aside form polling - yuck) that can wait for input on one of several file handles. I'm trying to tie two daemons together. This script needs to seriously munge the output of each for the consuption of the other, but that isn't done yet. Haven't gotten that far. I'm stuck on the async IO aspect still... select() should modify it's first arg to only have bits set that correspond to ready input channels, and I should be able to test that modified arg and find out weither any given input has data I can read from without blocking. I've got it set so that if it spends 3 seconds trying to read input, the alarm goes off, and the $SIG{ALRM} handler gives me a quick line-number backtrace. At the comment below ending in '!!!', it keeps entering that routine when it shouldn't. The code works, basicly, but continiously gets apparently false alerts. What really gets my goat is that the code is stolen from the man perlfunc page =P Polling isn't an option. The CPU is too slow, theres a load of other stuff running on the machine, it's only got 32 megs ram, and I need low latency here. Threads might work, but I don't want to have to learn Perl threads unless I have to or someone is there to hold my hand ;) Does anyone see offhand what I'm doing wrong here? Thanks, -scott #!/usr/bin/perl use Socket; use Carp qw(confess); $irchost = 'mesa.az.us.undernet.org'; $|=1; $SIG{ALRM} = sub { print join "\n", map { (caller($_))[2]; } 0..10; print "\n"; die; }; # mud socket(MUD, PF_INET, SOCK_STREAM, getprotobyname('tcp')); connect(MUD, sockaddr_in(2000, inet_aton("weehours.net"))) or die; select((select(MUD),$|=1)[0]) or die; print MUD "guest\n"; print MUD "\n"; $bmud = simbuf(); print "debug: filno for MUD: ", fileno(MUD), "\n"; # irc socket(IRC, PF_INET, SOCK_STREAM, getprotobyname('tcp')); connect(IRC, sockaddr_in(6660, inet_aton($irchost))) or die; select((select(IRC),$|=1)[0]) or die; $rnd=int(rand()*10); type("USER phaedrus . . phaedrus\@starlight.omega2.com\n"); type("NICK weehours$rnd\n"); $birc = simbuf(); print "debug: filno for IRC: ", fileno(IRC), "\n"; READLOOP: while(1) { $rmud=''; vec($rmud,fileno(MUD),1) = 1; $rirc=''; vec($rirc,fileno(IRC),1) = 1; $rout=''; vec($rout,fileno(IRC),1) = 1; vec($rout,fileno(MUD),1) = 1; # this is the select that should be leaving only bits set that correspond to ready inputs next READLOOP unless select($rout, undef, undef, undef); if($rout&$rirc) { eval { # we keep entering this block when we shouldnt, and blocking for input!!! alarm 3; sysread IRC, $buf, 8192; $birc->('write', $buf); while($buf = $birc->('read')) { $buf = fromirc($buf); syswrite MUD, $buf, length($buf) if($buf); } alarm 0; } } if($rout&$rmud) { eval { alarm 3; sysread MUD, $buf, 8192; $bmud->('write', $buf); while($buf = $bmud->('read')) { $buf = frommud($buf); syswrite IRC, $buf, length($buf) if($buf); } alarm 0; } } } sub fromirc { # filter input from IRC for output to MUD my $buf = shift; print STDOUT $buf, "\n"; if($buf =~ m/ 376 /) { type("MODE weehours$rnd +i\n"); type("JOIN #mud\n"); return ''; } elsif($buf =~ m/PING :(.+)/) { type("PONG $1\n"); return ''; } #} elsif($buf =~ m/$irchost:(.*)!(.*)PRIVMSG #(.*) :(.*)/o) { # #substitute {:%1!%2PRIVMSG #%4 :%3} {%1 says: %3} # return "$1 says: %3\n"; #} return "say $buf\n"; } sub frommud { my $buf = shift; if($buf =~ m/^([A-Z][a-z]+) tells you in common: (.*)/) { # return "PRIVMSG #mud :$1 says, $2\n"; print "debug: tell from mud: $2\n"; return "$2\n"; } return ''; } sub type ($) { my $str = shift; syswrite IRC, $str, length($str); print $str; } # this gives us a nice little buffering capability, so we can feed it # all of the data we get in, and then get only whole lines if a whole line # is available. sub simbuf { my $buf; return sub { my $act=shift; if($act eq 'read') { $buf =~ s/^(.*)\n//; return $1; } elsif($act eq 'write') { $buf .= shift; } } } From phaedrus at illogics.org Fri Dec 28 00:48:28 2001 From: phaedrus at illogics.org (Scott Walters) Date: Thu Aug 5 00:16:34 2004 Subject: Phoenix.pm: socket, select & sysread questions In-Reply-To: Message-ID: Nevermind, I'll just accept the fact that something is tickling select(), this it 'tis and nothing more, I'll mearly use non-blocking sockets. I'm only getting a false positive every few seconds *boggle*. cheers, -scott On Thu, 27 Dec 2001, Scott Walters wrote: > > Sorry to bug you folks, but I'm stumped. Normally when I'm completely stuck, I > nuke the offending code and recode it differently. In this case, select() is the > only thing (aside form polling - yuck) that can wait for input on one of several > file handles. > > I'm trying to tie two daemons together. This script needs to seriously munge > the output of each for the consuption of the other, but that isn't done yet. > Haven't gotten that far. I'm stuck on the async IO aspect still... > > select() should modify it's first arg to only have bits set that correspond > to ready input channels, and I should be able to test that modified arg and find > out weither any given input has data I can read from without blocking. > > I've got it set so that if it spends 3 seconds trying to read input, the > alarm goes off, and the $SIG{ALRM} handler gives me a quick line-number > backtrace. At the comment below ending in '!!!', it keeps entering that > routine when it shouldn't. The code works, basicly, but continiously > gets apparently false alerts. > > What really gets my goat is that the code is stolen from the man perlfunc > page =P > > Polling isn't an option. The CPU is too slow, theres a load of other > stuff running on the machine, it's only got 32 megs ram, and I need > low latency here. Threads might work, but I don't want to have to > learn Perl threads unless I have to or someone is there to hold my > hand ;) > > Does anyone see offhand what I'm doing wrong here? > > Thanks, > -scott > > #!/usr/bin/perl > > > use Socket; > use Carp qw(confess); > > $irchost = 'mesa.az.us.undernet.org'; > > $|=1; > $SIG{ALRM} = sub { print join "\n", map { (caller($_))[2]; } 0..10; print "\n"; die; }; > > # mud > socket(MUD, PF_INET, SOCK_STREAM, getprotobyname('tcp')); > connect(MUD, sockaddr_in(2000, inet_aton("weehours.net"))) or die; > select((select(MUD),$|=1)[0]) or die; > print MUD "guest\n"; > print MUD "\n"; > $bmud = simbuf(); > print "debug: filno for MUD: ", fileno(MUD), "\n"; > > # irc > socket(IRC, PF_INET, SOCK_STREAM, getprotobyname('tcp')); > connect(IRC, sockaddr_in(6660, inet_aton($irchost))) or die; > select((select(IRC),$|=1)[0]) or die; > $rnd=int(rand()*10); > type("USER phaedrus . . phaedrus\@starlight.omega2.com\n"); > type("NICK weehours$rnd\n"); > $birc = simbuf(); > print "debug: filno for IRC: ", fileno(IRC), "\n"; > > READLOOP: while(1) { > $rmud=''; vec($rmud,fileno(MUD),1) = 1; > $rirc=''; vec($rirc,fileno(IRC),1) = 1; > $rout=''; > vec($rout,fileno(IRC),1) = 1; > vec($rout,fileno(MUD),1) = 1; > > # this is the select that should be leaving only bits set that correspond to ready inputs > next READLOOP unless select($rout, undef, undef, undef); > > if($rout&$rirc) { eval { > # we keep entering this block when we shouldnt, and blocking for input!!! > alarm 3; > sysread IRC, $buf, 8192; > $birc->('write', $buf); > while($buf = $birc->('read')) { > $buf = fromirc($buf); > syswrite MUD, $buf, length($buf) if($buf); > } > alarm 0; > } } > > if($rout&$rmud) { eval { > alarm 3; > sysread MUD, $buf, 8192; > $bmud->('write', $buf); > while($buf = $bmud->('read')) { > $buf = frommud($buf); > syswrite IRC, $buf, length($buf) if($buf); > } > alarm 0; > } } > } > > sub fromirc { > # filter input from IRC for output to MUD > my $buf = shift; > print STDOUT $buf, "\n"; > if($buf =~ m/ 376 /) { > type("MODE weehours$rnd +i\n"); > type("JOIN #mud\n"); > return ''; > } elsif($buf =~ m/PING :(.+)/) { > type("PONG $1\n"); > return ''; > } > #} elsif($buf =~ m/$irchost:(.*)!(.*)PRIVMSG #(.*) :(.*)/o) { > # #substitute {:%1!%2PRIVMSG #%4 :%3} {%1 says: %3} > # return "$1 says: %3\n"; > #} > return "say $buf\n"; > } > > sub frommud { > my $buf = shift; > if($buf =~ m/^([A-Z][a-z]+) tells you in common: (.*)/) { > # return "PRIVMSG #mud :$1 says, $2\n"; > print "debug: tell from mud: $2\n"; > return "$2\n"; > } > return ''; > } > > sub type ($) { > my $str = shift; syswrite IRC, $str, length($str); print $str; > } > > # this gives us a nice little buffering capability, so we can feed it > # all of the data we get in, and then get only whole lines if a whole line > # is available. > > sub simbuf { > my $buf; > return sub { > my $act=shift; > if($act eq 'read') { > $buf =~ s/^(.*)\n//; return $1; > } elsif($act eq 'write') { > $buf .= shift; > } > } > } > > > From Eden.Li at asu.edu Fri Dec 28 15:57:57 2001 From: Eden.Li at asu.edu (Eden.Li@asu.edu) Date: Thu Aug 5 00:16:34 2004 Subject: Phoenix.pm: socket, select & sysread questions In-Reply-To: Message-ID: Try looking into IO::Select. And USE Net::IRC :) Eden From phaedrus at illogics.org Fri Dec 28 20:09:15 2001 From: phaedrus at illogics.org (Scott Walters) Date: Thu Aug 5 00:16:34 2004 Subject: Phoenix.pm: socket, select & sysread questions In-Reply-To: Message-ID: Bah, read the code. It's just a wrapper for select(). Thanks though. Er, IO::Select, is I mean. Net::IRC speaks server<->client. Ultimately I need server<->server, which is similiar in IRC, but a bit different. I could send them patches, but that doesn't suit my purposes. I love Perl, more then any other reason, because it gives me the tools to reinvent the wheel at blinding speed ;) Seriuosly, Net::IRC looks pretty cool. Maybe I can steal code from it. Thanks... btw, nonblock+select is adequate. Still, the mystery remains... -scott On Fri, 28 Dec 2001 Eden.Li@asu.edu wrote: > Try looking into IO::Select. And USE Net::IRC :) > > Eden > > > From eden.li at asu.edu Fri Dec 28 21:04:45 2001 From: eden.li at asu.edu (Eden Li) Date: Thu Aug 5 00:16:34 2004 Subject: Phoenix.pm: socket, select & sysread questions References: Message-ID: <000d01c19015$91e82e30$216efea9@wulong> yah.. yah.. I was just suggesting alternatives. I sent in one patch for Net::IRC and now I have to suggest it for any and every application it possibly could serve :) eden From: "Scott Walters" > Bah, read the code. It's just a wrapper for select(). Thanks though. Er, > IO::Select, is I mean. Net::IRC speaks server<->client. Ultimately I need > server<->server, which is similiar in IRC, but a bit different. I could > send them patches, but that doesn't suit my purposes. I love Perl, > more then any other reason, because it gives me the tools to reinvent > the wheel at blinding speed ;) Seriuosly, Net::IRC looks pretty > cool. Maybe I can steal code from it. Thanks... btw, nonblock+select > is adequate. Still, the mystery remains... > > -scott From phaedrus at illogics.org Sat Dec 29 02:06:03 2001 From: phaedrus at illogics.org (Scott Walters) Date: Thu Aug 5 00:16:34 2004 Subject: Phoenix.pm: socket, select & sysread questions In-Reply-To: <000d01c19015$91e82e30$216efea9@wulong> Message-ID: How hasty I was! If you give it a specific endorcement as opposed to a generic one, I will have to reconsider. Perhaps patches to add server<->server support isn't out of the question... lemmie see... -scott On Fri, 28 Dec 2001, Eden Li wrote: > yah.. yah.. I was just suggesting alternatives. I sent in one patch > for Net::IRC and now I have to suggest it for any and every application > it possibly could serve :) > > eden > > From: "Scott Walters" > > Bah, read the code. It's just a wrapper for select(). Thanks though. Er, > > IO::Select, is I mean. Net::IRC speaks server<->client. Ultimately I need > > server<->server, which is similiar in IRC, but a bit different. I could > > send them patches, but that doesn't suit my purposes. I love Perl, > > more then any other reason, because it gives me the tools to reinvent > > the wheel at blinding speed ;) Seriuosly, Net::IRC looks pretty > > cool. Maybe I can steal code from it. Thanks... btw, nonblock+select > > is adequate. Still, the mystery remains... > > > > -scott > >