[28811] in Perl-Users-Digest

home help back first fref pref prev next nref lref last post

Perl-Users Digest, Issue: 55 Volume: 11

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Sat Jan 20 14:05:50 2007

Date: Sat, 20 Jan 2007 11:05:04 -0800 (PST)
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)

Perl-Users Digest           Sat, 20 Jan 2007     Volume: 11 Number: 55

Today's topics:
        Could someone help me with this source code? <4w2weez02@sneakemail.com>
    Re: explanation needed <bik.mido@tiscalinet.it>
        FTP Link Extraction <mikeflan@earthlink.net>
    Re: need help with the tr and s/// <novafyre@hotmail.com>
    Re: need help with the tr and s/// <bik.mido@tiscalinet.it>
    Re: need help with the tr and s/// lucca70560@hotmail.com
    Re: need help with the tr and s/// lucca70560@hotmail.com
    Re: need help with the tr and s/// lucca70560@hotmail.com
    Re: need help with the tr and s/// <bik.mido@tiscalinet.it>
    Re: need help with the tr and s/// <bik.mido@tiscalinet.it>
    Re: need help with the tr and s/// (NOSPAM)
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

----------------------------------------------------------------------

Date: Sat, 20 Jan 2007 12:58:10 -0600
From: "Caduceus" <4w2weez02@sneakemail.com>
Subject: Could someone help me with this source code?
Message-Id: <eotoo2$f64$1@aioe.org>

Hi:

I'm trying to run this perl script called "salter" on activestates komodo.
I hope to use it with Mozilla Thunderbird.  I've read Learning Perl, another
perl book, went to perl.com, perl.org, pm.org, and cpan.com but nothing
seems to help.  I will show you the script.  Any help will be appreciated.
TIA Steve

 ------------------------------
#!/usr/bin/perl -w
# Salter single-threaded email address salter

# (c) 2003, 2004 Julian Haight,     http://www.julianhaight.com/
# All Rights Reserved under GPL:    http://www.gnu.org/licenses/gpl.txt
# Current version available here:   http://www.julianhaight.com/salter

# Version history
# 7/19/04 V1.2
# added stripsender feature
# fixed missing newline between header & body

# 3/26/04 V1.1
# cleaned up smtp sending code, added envonly mode, added version

# 3/12/04
# give each recipient their own, permanent random virtual sender
# move config to user-dir, not /etc.

# 9/29/03 - changed to use only lowercase-alpha, avoid spam filters
#  Also, added final response after quit (worked without for pine, but not
moz)

use strict; use Socket; use FileHandle; use Digest::MD5;

my($CONFIG) = ($ENV{HOME} . '/.salter');
my($MAPFN) = "$CONFIG/map.txt";
my($EOL) = "\015\012";
my($debug) = 0;
my($SMTPTO) = 10; # 10 second timeout
my($VERSION) = 'V1.2';

my($SAMP) = '

# here is a sample config file:

listenport 2525
listenip 127.0.0.1
sendport 25
sendip your_isps_mailserver.example.com
maxclient 5
# 1 for unsafe but fast!, 0 for slow & steady (not yet available)
buffermode      1
# 1 remaps only envelope, not header, good if you want to filter bad bounces
envonly         0
# 1 strips sender field (for pine or whatever)
stripsender     1

#               From this address       To random @ this domain!
#               -----------------       ------------------------
remap         you@example.com         salty.you.example.com
remap         other@example.com       foo.example.com

# to set your identity per-recipient (email or part)
# -  use workplace address for work recipients
hardwire        workplace.example.com  you@workplace.example.com
# -  use mailing list subscription address when posting to list.
hardwire        list1@ml.example.com    listsubaddr@example.com

# end sample config!
';

my(%config, %remap, %map, %hardwire);
unless (-e $CONFIG) { mkdir($CONFIG); }
readConfig(); # read the config file into %config
readMap();
listenLoop(); # work 'til you die!
exit 0;

# listen for one connection at a time, and call the proxy for each one.
# die if there are errors
sub listenLoop {
    my($cliaddr, $cliip, $cliport);
    socket(SOCK, PF_INET, SOCK_STREAM, getprotobyname('tcp')) ||
die "Socket: $!";
    setsockopt(SOCK, SOL_SOCKET, SO_REUSEADDR, pack('l', 1)) ||
die "Setsockopt: $!";
    bind(SOCK, sockaddr_in($config{'listenport'},
   inet_aton($config{'listenip'}))) ||
   die "bind: $!";
    listen(SOCK, $config{'maxclient'}) ||
die "listen: $!";
    while ($cliaddr = accept(CLI, SOCK)) {
# print STDERR "got connection\n";
($cliport, $cliip) = (sockaddr_in($cliaddr));
CLI->autoflush(1);
if ($_ = proxyIt(\*CLI)) {
    print STDERR "<< 550 Proxy error: $_\n";
    print CLI "550 Proxy error: $_\n";
}
close CLI;
    }
}

sub proxyIt {
   my($CLI) = @_;
   my($cmds, $head, $body, $cmd);
   $cmds = '';
   unless ($config{buffered}) {
       print $CLI "500 No safe delivery mode yet, sorry!$EOL";
       close($CLI);
       die "No safe mode yet, sorry!";
   }
   # read smtp
   print $CLI "220 localhost SMTP pretender: salter $VERSION $EOL";
   while ($cmd = <$CLI>) {
       $cmds .= $cmd || '';
       if (lc($cmd) eq "data$EOL") { last; }
       if (lc(substr($cmd, 0, 4)) eq 'ehlo') {
   print $CLI "451 EHLO is soo complicated$EOL";
       } else {
   print $CLI "250 Buffering$EOL";
       }
   }
   print $CLI "354 Ready for data$EOL";
   # read head
   while ($cmd = <$CLI>) {
       if ($cmd eq $EOL) { last; }
       if ((!$config{stripsender}) || ($cmd !~ m/^sender:/i)) {
   $head .= $cmd;
       }
   }
   # read body
   while ($cmd = <$CLI>) {
       if ($cmd eq ".$EOL") { last; }
       $body .= $cmd;
   }
   while ($CLI && print $CLI "250 Buffering$EOL") {
       $cmd = <$CLI>;
       $cmds .= $cmd;
       if (lc($cmd) eq "quit$EOL") { last; }
   }
   print $CLI "221 Bye bye, hopefully it'll work!$EOL";
   close $CLI;
   deliverAll($cmds, $head, $body);
}

sub deliverAll {
    my($cmds, $head, $body) = @_;
    my($recipmap, $message, $line, $remap, $recip, $sender,
       $sremap, $cmd, $val, $S,
       @recips, $from);
#    print STDERR "Deliverall:\n$cmds\n==\n$head\n--\n$body\n++\n";
    while ($cmds =~ m/([^:\n]*): ?\<?([^\>\n]*[^\s\>])?\>?/g) {
$cmd = lc($1); $val = $2;
# print "cmd: $cmd = $val\n";
if ($cmd eq 'mail from') {
    $sender = $val;
} elsif ($cmd eq 'rcpt to') {
    $recip = $val;
    $remap = getRecipMapping($recip);
#     print STDERR "remap $recip to $remap\n";
    push(@{$recipmap->{$remap}}, $recip);
}
    }
#    print STDERR "Done w/commands\n";
    while ($_ = smtpOpen(*S)) {
print STDERR "Cannot open smtp: $_, sleeping..\n";
sleep(3);
    }
#    print STDERR "Smtp open\n";
    foreach $remap (keys(%{$recipmap})) {
$message = 'X-Mailer-Addon: Salter ' . $VERSION .
    ' http://www.julianhaight.com/salter' . $EOL . $head;
$_ = $recipmap->{$remap};
$sremap = $sender;
(@recips) = (@$_);
foreach $from (keys(%remap)) {
    if ($remap =~ m/\@/) {
#print "For @recips, $from -> $remap\n";
unless ($config{envonly}) {
    $message = replace($message, $from, $remap);
}
$sremap = replace($sremap, $from, $remap);
    } else {
unless ($config{envonly}) {
    $message = replace($message, $from,
       $remap . '@' . $remap{$from});
}
$sremap = replace($sremap, $from,
  $remap . '@' . $remap{$from});
    }
}
# print "Sending\n$message\n\n";
unless ($sremap) {
    print STDERR "sender $sender not remapped\n";
    $sremap = $sender;
}
$message .= $EOL . $body;
if (($_ = smtpEnvelope(\*S, $sremap, @recips)) ||
    ($_ = smtpData(\*S, $message))) {
#     die "Error during delivery: $_";
    print STDERR ("Failed to send: $_ saving in $CONFIG/failed.txt");
    open (SAVE, ">>$CONFIG/failed.txt");
    print SAVE $message;
    close(SAVE);
# } else {
#     print "Message delivered: $sremap -> @recips\n";
}
    }
}

sub randSecret {
    my($len) = @_;
    my($char, $pass, $i);
    for ($i=0; $i < $len; $i++) {
$char = int(rand() * 26);
$char += 97;
$pass .= pack('c', $char);
    }
    return $pass;
}

sub readConfig {
    my($line);
    my($fn) = "$CONFIG/salter.conf";
    unless (-e $fn) {
print STDERR "Salter not configured.  Please create $fn.  Sample:
$SAMP
";
exit 1;
    }
    open (CONFIG, $fn) || die "$fn $!";
    while ($line = <CONFIG>) {
if ($line =~ m/^([^\#;\s]\S+)\s*(\S+)\s*(\S*).*$/) {
    if ($1 eq 'remap') {
$remap{$2} = $3;
    } elsif ($1 eq 'hardwire') {
$hardwire{$2} = $3;
    } else {
$config{$1} = $2;
    }
}
    }
    print STDERR "Listening on $config{'listenip'}:$config{'listenport'}
Outbound on $config{'sendip'}:$config{'sendport'}\n";
}

sub getSenderMapping {
    my($addr) = lc(@_);
    return $remap{$addr}
}

sub getRecipMapping {
    my($addr) = lc($_[0]);
    my(@parts, $part);
    # exact match
    if ($part = $hardwire{$addr}) {
return $part;
    }
    # domain match
    (@parts) = (getDomParts($addr));
    while (@parts) {
if ($part = $hardwire{join('.', @parts)}) {
    return $part;
}
pop(@parts);
    }
    # default randomizer
    return getMapping($addr);
}

sub getDomParts {
    my($addr) = @_;
    my($dom, @parts);
#    print "getDomParts $addr\n";
#    print hexDump($addr) . "\n";
    if ($addr =~ m/[^\@]*\@(.*)/) {
#    if ($addr =~ m/^\s*[^\@\s]+\@([^\@\s]+)\s*$/) {
$dom = $1;
(@parts) = (split(/\./, $dom));
    }
#    print STDERR "parts: @parts ($dom)\n";
    return (@parts);
}


sub getMapping {
    my($addr) = @_;
    my($hash) = Digest::MD5::md5_base64($addr);
    my($rand);
    unless ($rand = $map{$hash}) {
$map{$hash} = ($rand = randSecret(16));
writeMap($hash, $rand);
    }
#    print "getMapping $addr = $rand\n";
    return ($rand);}

sub writeMap {
    open(MAP, ">>$MAPFN") || return 1;
    print MAP join(' ', @_) . "\n";
    close(MAP);
}

sub readMap {
    my($line);
    my($key, $val);
    unless (-e $MAPFN) {
print STDERR "Starting hashed recip map in $MAPFN\n";
    } elsif (open (MAP, $MAPFN)) {
while (($key, $val) = split(' ', <MAP>)) {
    chop($map{$key} = $val);
}
    } else {
die "Error opening $MAPFN for read: $!";
    }
    close(MAP);
}

sub replace {
    my($text, $old, $new) = @_;
    my($loc, $len);
#    print "text: $text\n";
    if (index($new, $old) >= 0) { return $text; }
    $len = length($old);
    $loc = index($text, $old);
    while ($loc >= 0) {
$text = substr($text, 0, $loc) . $new . substr($text, $loc + $len);
$loc = index($text, $old);
    }
#    print "replaced $old with $new in text: $text\n";
    return $text;
}

sub errlog {
    print STDERR "@_\n";
}

sub hexDump {
    my($string) = @_;
    my($size) = 15;
    my($char, $rval, $hex, $str, $asc);
    foreach $char (split('', $string)) {
$asc = unpack('C', $char);
if (($asc < 32) || ($asc > 176)) {
    $char = '?';
    $hex .= sprintf('%.2x<', $asc);
} else {
    $hex .= sprintf('%.2x ', $asc);
}
$str .= $char;
if (length($str) >= $size) {
    $rval .= $hex . $str . "\n";
    $hex = ''; $str = '';
}
    }
    if ($hex) {
$hex .= (' ' x (($size*3) - length($hex)));
$rval .= $hex . $str . "\n"
    }
    $rval = substr($rval, 0, length($rval)-1);
    return $rval;
}

# (C) 2002, 2003 Julian Haight.  All rights reserved
# original sendmail 1.21 by Christian Mallwitz.
# Modified and 'modulized' by ivkovic@csi.com
# totally mangled by julian
# adapted for salter 3/13/04

sub smtpSend {
    my($message, $fromaddr, @recips) = @_;

    unless ($message) {
errlog ("Refusing to send empty email $fromaddr -> @recips");
return undef();
    }    if ($debug) { errlog("trying smtpSend"); }

    # now, isn't that pretty?
    if (($_ = smtpOpen(\*S)) ||
($_ = smtpEnvelope(\*S, $fromaddr, @recips)) ||
($_ = smtpData(\*S, $message)) ||
($_ = smtpClose(\*S))) {
return ("smtpSend:" . $_);
    } else {
return undef();
    }
}

sub smtpOpen {
    my($fh) = @_;
    my($k, $proto, $smtpaddr);
    ($smtpaddr) = (gethostbyname($config{sendip}))[4];

    my $save_w = $^W;
    local $/;
    $/ = "\015\012";

    $proto = (getprotobyname('tcp'))[2];
    unless (defined($smtpaddr)) {
return ("smtpOpen: smtp host unknown:'" . $config{sendip} . "'");
    }
    # open socket and start mail session
    if (!socket($fh, AF_INET, SOCK_STREAM, $proto)) {
        return ("smtpOpen: socket failed ( $! )");
    }

    # connect
    if (!connect($fh, pack('Sna4x8', AF_INET, $config{sendport},
$smtpaddr))) {
if ($! eq 'Interrupted system call') {
    return "smtpOpen: timeout after $SMTPTO seconds during connect";
} else {
    return ("smtpOpen: connect to smtp server failed ($!)");
}
    }
    my($oldfh) = select($fh); $| = 1; select($oldfh);
    if (($_ = smtpExchange($fh)) !~ m/^[23]/) {
        return ("smtpOpen: smtpsend connection error from smtp server
($_)");
    }
    if (($_ = smtpExchange($fh, "HELO Salter" . $VERSION)) !~ m/^[23]/) {
return ("smtpOpen: smtpsend HELO error ($_)");
    }
    return undef();
}

sub smtpEnvelope {
    my($fh, $from, @recips) = @_;
    if (($_ = smtpFrom($fh, $from)) || ($_ = smtpTo($fh, @recips))) {
return "smtpEnvelope ($from, @recips): $_";
    }
    return undef();
}

sub smtpFrom {
    my($fh, $from) = @_;
    if (($_ = smtpExchange($fh, "MAIL FROM: <$from>")) !~ m/^[23]/) {
        return ("smtpFrom: mail From $from: error ($_)");
    }
    return undef();
}

sub smtpTo {
    my($fh, @recips) = @_;
    my($to);
    unless (@recips) { return ("No recipient!") }
    foreach $to (@recips) {
unless ($to) {
    errlog("Null recipient in smtpTo, skipping");
    next;
}
if (($_ = smtpExchange($fh, "RCPT TO: <$to>")) !~ m/^[23]/) {
    return ("smtpTo rcpt to:$to ($_)");
        }
    }
    return undef();
}

sub smtpData {
    my($fh, $data) = @_;
    $data =~ s/^\./\.\./gm;     # handle . as first character
    if ($_ = smtpBeginData($fh)) { return $_; }
    smtpOutput($fh, $data);
    if ($debug) { errlog("Wrote " . length($data) . " bytes of data"); }
    return smtpEnd($fh);
}

sub smtpOutput {
    my($fh, $data) = @_;
    my($i, $c, $lc);

    for ($i = 0; $i < length($data); $i++) {
$c = substr($data, $i, 1);
if (($c eq "\012") && ($lc ne "\015")) {
    print $fh "\015";
}
$lc = $c;
print $fh $c;
    }
}

sub smtpBeginData {
    my($fh) = @_;
    if (($_ = smtpExchange($fh, "DATA")) !~ m/^[23]/) {
return ("smtpBeginData: Cannot send data ($_)");
    }
    return undef();
}

sub smtpRset {
    my($fh) = @_;
    if (($_ = smtpExchange($fh, "RSET")) !~ m/^[23]/) {
return ("smtpRset: Cannot rset smtp ($_)");
    }
    return undef();
}

sub smtpEnd {
    my($fh) = @_;
    if (($_ = smtpExchange($fh, "\015\012.")) !~ m/^[23]/) {
return ("smtpEnd: message transmission failed: $_");
    }
    return undef();
}

sub smtpClose {
    my($fh) = @_;
    my($code) = smtpExchange($fh, "QUIT");
    close $fh;

    if ($code !~ m/^[23]/) {
return ("smtpClose: cannot quit: $_");
    } else {
return undef();
    }
}

sub smtpExchange {
    my($fh, $cmd) = @_;
    my($resp);
    if ($cmd) {
print $fh ($cmd . "\015\012");
if ($debug) { errlog(">> $cmd"); }
    }
    while (($resp = <$fh>) !~ m/^(\d+)\s/) {
if ($debug) { errlog("<. $resp"); }
    }
    chomp($resp);
    if ($debug) { errlog("<< $resp"); }
    return $resp;
}

1; 




------------------------------

Date: Sat, 20 Jan 2007 12:22:00 +0100
From: Michele Dondi <bik.mido@tiscalinet.it>
Subject: Re: explanation needed
Message-Id: <ckt3r2h4l7kscbe50grocnasd1ic8lgv2d@4ax.com>

On 20 Jan 2007 00:38:40 -0800, "anirban" <anir.dr@gmail.com> wrote:

>Subject: explanation needed

About what? Please put the subject of your post in the Subject!

>dear all
>  i am a beginner in perl.i am familiar with regex.but somewhere in the
>net i hv found the following example which i cdnt understand.and there

Are you a beginner with English as well? Not everybody here is a
native English speaker, and you would do us a great favour avoiding
dude-like abbreviations.

>was no explanation given in it.it would be very much helpful for me if
>anyone kindly explain the following snippet of code.i understood what
>it is actually doing.its jst retrieving the comma separated values frm
>$text one by one.but i cdnt understand the regex part inside the while
>loop inside the parse_csv subroutine.

Let's see...

>sub parse_csv {
>    my $text = shift;      # record containing comma-separated values

Just pass the string to be parsed.

>    my @new  = ();

No need for the initialization.

>    push(@new, $+) while $text =~ m{

push() into @new the value of $+ at each iteration. $+ is documented
in perldoc perlvar:

: $+      The text matched by the last bracket of the last successful
:         search pattern. This is useful if you don't know which one of
:         a set of alternative patterns matched. For example:

Which is actually the case here.

>        "([^\"\\]*(?:\\.[^\"\\]*)*)",?

match a string beginning with a double quote followed by zero or more
charachters that are not a double quote or a backslash followed by
zero or more sequences consisting of a backslash, any charachter and
zero or more charachters that are not a double quote or a backslash,
followed by a double quote and optionally a comma,

>           |  ([^,]+),?

or a string of one or more charachters that are not a comma,
optionally followed by a comma,
>           | ,

or a comma.

>       }gx;
>       push(@new, undef) if substr($text, -1,1) eq ',';

push() undef() into @new if the last charachter is a comma.

>       return @new;      # list of values that were comma-separated
>}

BTW: the best way to parse CSV text is to use a dedicated module, like
Text::CSV_XS.


HTH,
Michele
-- 
{$_=pack'B8'x25,unpack'A8'x32,$a^=sub{pop^pop}->(map substr
(($a||=join'',map--$|x$_,(unpack'w',unpack'u','G^<R<Y]*YB='
 .'KYU;*EVH[.FHF2W+#"\Z*5TI/ER<Z`S(G.DZZ9OX0Z')=~/./g)x2,$_,
256),7,249);s/[^\w,]/ /g;$ \=/^J/?$/:"\r";print,redo}#JAPH,


------------------------------

Date: Sat, 20 Jan 2007 15:06:08 GMT
From: Mike Flannigan <mikeflan@earthlink.net>
Subject: FTP Link Extraction
Message-Id: <45B23075.3E6A0F97@earthlink.net>


What is the best way to do simple link extraction
from an FTP site using native Perl.  I have native perl
HTML extraction scripts, and I can find the
packaged Extract Link programs on the web, but
I'd like a simple script that will do the job for me.
I'm surprised I can't find this on my own.

Is Net::FTP the way to go?


Mike Flannigan




------------------------------

Date: Sat, 20 Jan 2007 04:19:58 -0700
From: Mark Donovan <novafyre@hotmail.com>
Subject: Re: need help with the tr and s///
Message-Id: <C1D748EE.974C%novafyre@hotmail.com>

Sherm,

The problem stems from Dondi's attempt to be cute with a "clever"
cryptogram. Dondi offered to continue a discussion with me by e-mail. The
thread has become a person-to-person matter that is no longer relevant to a
perl technical newsgroup. I was told, "I hope you will decipher it, it's not
that difficult - I won't post it in any clearer form."

In point of fact, it was *entirely* unnecessary for Dondi to to risk the
exposure of *his* e-mail address, since my address is posted in the clear.

-- 
Regards,
Mark

On 1/19/07 22:12, "Sherm Pendley" <spamtrap@dot-app.org> wrote:

> Michele is male ...
> 
> Anyhow, *he* did provide a real email address, in a form that any human with
> two working brain cells could use to reach *him*. De-munging it and reposting
> it in plain text for the sole benefit of spam-bots was not only unnecessary,
> it was petty, spiteful, and childish.
> 
> So like I said - grow up.
> 



------------------------------

Date: Sat, 20 Jan 2007 13:46:54 +0100
From: Michele Dondi <bik.mido@tiscalinet.it>
Subject: Re: need help with the tr and s///
Message-Id: <4i34r2dopnldthvt337j11j9qhao1g46jo@4ax.com>

On Sat, 20 Jan 2007 04:19:58 -0700, Mark Donovan
<novafyre@hotmail.com> wrote:

>The problem stems from Dondi's attempt to be cute with a "clever"
>cryptogram. Dondi offered to continue a discussion with me by e-mail. The

Really I wrote:

: Well, I strongly prefer to keep the discussion public, but if you
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

: really want to you can write me at

>thread has become a person-to-person matter that is no longer relevant to a
>perl technical newsgroup. I was told, "I hope you will decipher it, it's not
>that difficult - I won't post it in any clearer form."

The fact that the discussion has become a person-to-person one is IMO
a pure circumstance: it is still technical and Perl-related, anyone
may want to jump in and contribute.


Michele
-- 
{$_=pack'B8'x25,unpack'A8'x32,$a^=sub{pop^pop}->(map substr
(($a||=join'',map--$|x$_,(unpack'w',unpack'u','G^<R<Y]*YB='
 .'KYU;*EVH[.FHF2W+#"\Z*5TI/ER<Z`S(G.DZZ9OX0Z')=~/./g)x2,$_,
256),7,249);s/[^\w,]/ /g;$ \=/^J/?$/:"\r";print,redo}#JAPH,


------------------------------

Date: 20 Jan 2007 06:05:41 -0800
From: lucca70560@hotmail.com
Subject: Re: need help with the tr and s///
Message-Id: <1169301941.345483.284660@s34g2000cwa.googlegroups.com>

Sherm Pendley wrote:
> lucca70560@hotmail.com writes:
> > Anyone with an ounce of courtesy would have used a real email address,
> > so those of us that want to ask further questions in email could
> > actually reach her.
>
> Michele is male - or at least I assume so, seeing as how most people who
> wear a beard and moustache are of that gender, and "Michele" is an Italian
> form of "Michael".

Michele *is* a girl's name, and plenty of Italian women have
mustaches...

> Web Hosting by West Virginians, for West Virginians: http://wv-www.net

West Virginia has a computer???



------------------------------

Date: 20 Jan 2007 06:07:17 -0800
From: lucca70560@hotmail.com
Subject: Re: need help with the tr and s///
Message-Id: <1169302037.376027.18630@m58g2000cwm.googlegroups.com>

Michele Dondi wrote:
> On 19 Jan 2007 20:36:25 -0800, lucca70560@hotmail.com wrote:
>
> >Anyone with an ounce of courtesy would have used a real email address,
> >so those of us that want to ask further questions in email could
> >actually reach her.
>
> s/her/him/;  # please!

Not until you stop acting like a spoiled little girl.



------------------------------

Date: 20 Jan 2007 06:10:17 -0800
From: lucca70560@hotmail.com
Subject: Re: need help with the tr and s///
Message-Id: <1169302217.053484.114550@11g2000cwr.googlegroups.com>


Michele Dondi wrote:
> On 19 Jan 2007 19:28:46 -0800, lucca70560@hotmail.com wrote:
>
> >> (I hope you will decipher it, it's not that difficult - I won't post
> >> it in any clearer form.)
> >
> >I figured it out: xxxxxx@xxx.xx.xxxx.xx
> 
> TY! (I'm being sarcastic, for the record...)

Hey, va fa Napoli!



------------------------------

Date: Sat, 20 Jan 2007 15:32:47 +0100
From: Michele Dondi <bik.mido@tiscalinet.it>
Subject: Re: need help with the tr and s///
Message-Id: <ju94r252u1nau13r502k5500gd85e80707@4ax.com>

On 20 Jan 2007 06:05:41 -0800, lucca70560@hotmail.com wrote:

>> Michele is male - or at least I assume so, seeing as how most people who
>> wear a beard and moustache are of that gender, and "Michele" is an Italian
>> form of "Michael".
>
>Michele *is* a girl's name, and plenty of Italian women have
>mustaches...

In Italy the feminine name is Michela and the masculine one is
Michele. Maybe you're confusing with french Michelle.


Michele
-- 
{$_=pack'B8'x25,unpack'A8'x32,$a^=sub{pop^pop}->(map substr
(($a||=join'',map--$|x$_,(unpack'w',unpack'u','G^<R<Y]*YB='
 .'KYU;*EVH[.FHF2W+#"\Z*5TI/ER<Z`S(G.DZZ9OX0Z')=~/./g)x2,$_,
256),7,249);s/[^\w,]/ /g;$ \=/^J/?$/:"\r";print,redo}#JAPH,


------------------------------

Date: Sat, 20 Jan 2007 15:34:08 +0100
From: Michele Dondi <bik.mido@tiscalinet.it>
Subject: Re: need help with the tr and s///
Message-Id: <t0a4r2dvp6kn2kmfn3tii8lvk5bjp5cd89@4ax.com>

On 20 Jan 2007 06:07:17 -0800, lucca70560@hotmail.com wrote:

>> >Anyone with an ounce of courtesy would have used a real email address,
>> >so those of us that want to ask further questions in email could
>> >actually reach her.
>>
>> s/her/him/;  # please!
>
>Not until you stop acting like a spoiled little girl.

Huh?!? Just because I want to avoid further spam on a particular email
address?


Michele
-- 
{$_=pack'B8'x25,unpack'A8'x32,$a^=sub{pop^pop}->(map substr
(($a||=join'',map--$|x$_,(unpack'w',unpack'u','G^<R<Y]*YB='
 .'KYU;*EVH[.FHF2W+#"\Z*5TI/ER<Z`S(G.DZZ9OX0Z')=~/./g)x2,$_,
256),7,249);s/[^\w,]/ /g;$ \=/^J/?$/:"\r";print,redo}#JAPH,


------------------------------

Date: Sat, 20 Jan 2007 10:29:02 -0600
From: "Mumia W. (NOSPAM)" <paduille.4060.mumia.w+nospam@earthlink.net>
Subject: Re: need help with the tr and s///
Message-Id: <eotk9k$5jc$1@aioe.org>

On 01/20/2007 08:34 AM, Michele Dondi wrote:
> On 20 Jan 2007 06:07:17 -0800, lucca70560@hotmail.com wrote:
> 
>>>> Anyone with an ounce of courtesy would have used a real email address,
>>>> so those of us that want to ask further questions in email could
>>>> actually reach her.
>>> s/her/him/;  # please!
>> Not until you stop acting like a spoiled little girl.
> 
> Huh?!? Just because I want to avoid further spam on a particular email
> address?
> 
> 
> Michele

It's a troll--and probably a morph of Mark Donovan.

Don't waste your time.


-- 
Windows Vista and your freedom in conflict:
http://techdirt.com/articles/20061019/102225.shtml


------------------------------

Date: 6 Apr 2001 21:33:47 GMT (Last modified)
From: Perl-Users-Request@ruby.oce.orst.edu (Perl-Users-Digest Admin) 
Subject: Digest Administrivia (Last modified: 6 Apr 01)
Message-Id: <null>


Administrivia:

#The Perl-Users Digest is a retransmission of the USENET newsgroup
#comp.lang.perl.misc.  For subscription or unsubscription requests, send
#the single line:
#
#	subscribe perl-users
#or:
#	unsubscribe perl-users
#
#to almanac@ruby.oce.orst.edu.  

NOTE: due to the current flood of worm email banging on ruby, the smtp
server on ruby has been shut off until further notice. 

To submit articles to comp.lang.perl.announce, send your article to
clpa@perl.com.

#To request back copies (available for a week or so), send your request
#to almanac@ruby.oce.orst.edu with the command "send perl-users x.y",
#where x is the volume number and y is the issue number.

#For other requests pertaining to the digest, send mail to
#perl-users-request@ruby.oce.orst.edu. Do not waste your time or mine
#sending perl questions to the -request address, I don't have time to
#answer them even if I did know the answer.


------------------------------
End of Perl-Users Digest V11 Issue 55
*************************************


home help back first fref pref prev next nref lref last post