[19767] in Perl-Users-Digest

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

Perl-Users Digest, Issue: 1962 Volume: 10

daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Fri Oct 19 06:05:36 2001

Date: Fri, 19 Oct 2001 03:05:08 -0700 (PDT)
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)
Message-Id: <1003485907-v10-i1962@ruby.oce.orst.edu>
Content-Type: text

Perl-Users Digest           Fri, 19 Oct 2001     Volume: 10 Number: 1962

Today's topics:
    Re: Attach a file to email (Mark Jason Dominus)
    Re: beginner: match a decimal number <goldbb2@earthlink.net>
    Re: Case-insensitive Command Line Args (Joe Smith)
        challence to regex gurus: selecting within selected par <hugo@fractalgraphics.com.au>
    Re: charAt??? <bernard.el-hagin@lido-tech.net>
    Re: HELP: Regular expression and grep <goldbb2@earthlink.net>
    Re: how can i make perl retreive a web page and save it <bart.lateur@skynet.be>
    Re: How do I disambiguate within the curly braces of a  <null@null.com>
    Re: How do I disambiguate within the curly braces of a  (Joe Smith)
    Re: How do I disambiguate within the curly braces of a  (Joe Smith)
        Howto use an .exe with Perl under WinNT?  <olivier.laurent@archangelis.com>
    Re: Howto use an .exe with Perl under WinNT? (Logan Shaw)
    Re: Howto use an .exe with Perl under WinNT? <olivier.laurent@archangelis.com>
    Re: need ideas for two-way associative array <goldbb2@earthlink.net>
    Re: precedence question (Joe Smith)
    Re: Regex: extracting repeating values like x=a,b,c,d <goldbb2@earthlink.net>
    Re: Regex: extracting repeating values like x=a,b,c,d <goldbb2@earthlink.net>
    Re: Regex: extracting repeating values like x=a,b,c,d (Rafael Garcia-Suarez)
    Re: Regex: extracting repeating values like x=a,b,c,d (EED)
    Re: Regex: extracting repeating values like x=a,b,c,d (EED)
    Re: Scaling a DNA string <goldbb2@earthlink.net>
    Re: taint unique to Perl? <goldbb2@earthlink.net>
        Tar failure with Pipe Open (BUCK NAKED1)
    Re: Tar failure with Pipe Open <goldbb2@earthlink.net>
        Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)

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

Date: Fri, 19 Oct 2001 07:19:45 GMT
From: mjd@plover.com (Mark Jason Dominus)
Subject: Re: Attach a file to email
Message-Id: <3bcfd411.33f9$372@news.op.net>

In article <3bcfaa3f.24873756@news.vanderbilt.edu>,
Andrew Hutchinson <ahutch@macatawa.org> wrote:
>I've sent email from scripts before by binding a handle to sendmail,
>piping to sendmail, and using Net::SMTP and Mail::Mailer.  However, I
>can't seem to find anything on CPAN that allow a file _attachment_.  

I've been using this program, which uses MIME::Lite to do the attaching:

----------------------------------------------------------------
#!/usr/bin/perl

use MIME::Lite;
use Getopt::Std;

%type = ('gif' => 'image/gif',
         'jpg' => 'image/jpeg',
         'jpeg' => 'image/jpeg',
         'pdf'  => 'application/pdf',
         'html' => 'text/html',
         'htm' => 'text/html',
         'txt' => 'text/plain',
        );

$MAILER = "/var/qmail/bin/qmail-inject";

getopts('f:s:o:m:t:O') or usage();


$from = $opt_f || default_from();

sub default_from {
  my $user = $ENV{USER} || getpwuid($<);
  my $host = $ENV{HOSTNAME};
  $host ? join '@', $user, $host : $user;
}

if ($opt_o && $opt_O) {
  print STDERR "-O and -o are incompatible.\n";
  exit 1;
}
if ($opt_O) { $opt_o = "| $MAILER" }
$opt_o = $ENV{DRAFT} || '-' unless defined $opt_o;
if ($opt_o !~ /^[|>]/) {
  $opt_o = "> $opt_o";
}
open OUTPUT, "$opt_o"
  or die "Couldn't open output file $opt_o: $!; aborting";

if ($opt_m) {
  open MSG, $opt_m
    or die "Couldn't open message file $opt_m: $!; aborting";
  @MSG = <MSG>;
  close MSG;
} else {
  print STDERR "Enter message on standard input; use . to terminate.\n";
  while (<STDIN>) {
    last if $_ eq ".\n";
    push @MSG, $_;
  }
}
my $msg = MIME::Lite->new(From    => $from,
                          To      => $opt_t,
                          Subject => $opt_s,
                          Type    => 'TEXT',
                          Data    => \@MSG);  


for (@ARGV) {
  my ($suf) = (/\.([^.]*)$/);
  my $type = $type{lc $suf} || 'application/octet-stream';
  $msg->attach(Type     => $type,
               Path     => $_);

}

$msg->print(\*OUTPUT);

exit 0;

# ----------------------------------------------------------------
sub usage {
  my $df = default_from();
  print <<EOM;
  $0 -O [-f from] [-s subject] [-o outputfile] 
        [-m message body] [-t to] [attachments...]
    -o  deliver message to specified output file (-o"| command" OK)
        (default STDOUT)
    -O	inject message into mail system directly
    -f  specify 'from' address (default $df)
    -t  specify 'to' address (default none)
    -s  specify subject (default none)
    -m  specify input file for message body (-m"command |" OK)
        (default: read from stdin like /bin/mail)
EOM
  exit 1;
}
-- 
@P=split//,".URRUU\c8R";@d=split//,"\nrekcah xinU / lreP rehtona tsuJ";sub p{
@p{"r$p","u$p"}=(P,P);pipe"r$p","u$p";++$p;($q*=2)+=$f=!fork;map{$P=$P[$f^ord
($p{$_})&6];$p{$_}=/ ^$P/ix?$P:close$_}keys%p}p;p;p;p;p;map{$p{$_}=~/^[P.]/&&
close$_}%p;wait until$?;map{/^r/&&<$_>}%p;$_=$d[$q];sleep rand(2)if/\S/;print


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

Date: Fri, 19 Oct 2001 03:20:21 -0400
From: Benjamin Goldberg <goldbb2@earthlink.net>
Subject: Re: beginner: match a decimal number
Message-Id: <3BCFD435.17753F70@earthlink.net>

Rene Scheibe wrote:
> 
> I want to get the first decimal number of
> the loadaverage but don't have success.
> I do:
>     $number=`cat /proc/loadavg;
>     $number=~/(\d+\.\d*)/;
>     print $number;
> but I always get all the numbers.

Either:
print `cat /proc/loadavg` =~ /(\d+\.\d*)/, "\n";

Or:
use File::Slurp;
print readfile("/proc/loadavg") =~ /(\d+\.\d*)/, "\n";

-- 
"What does stupid old man mean pidgin talk?
Shampoo does not talk like a bird."


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

Date: Fri, 19 Oct 2001 08:49:14 +0000 (UTC)
From: inwap@best.com (Joe Smith)
Subject: Re: Case-insensitive Command Line Args
Message-Id: <9qopea$1hf6$1@nntp1.ba.best.com>

In article <f98999c8.0110180457.3353e00e@posting.google.com>,
Buck Turgidson <jc_va@hotmail.com> wrote:
>However, I want to be able to enter
>command line args such as "GREP -IL"  in upper case, just in case I am
>set to upper case.  I tried adding the noted line, but it is ignored. 
>use Getopt::Std;
>my %opt;
>getopts('ivcle:',\%opt);
>$opt = lc($opt);         #  <----- added this

 getopts('ivcle:IVCLE:',\%opt);		# List all valid options here
 $opt{i} = $opt{I} if exists $opt{I};
 $opt{v} = $opt{V} if exists $opt{V};
 $opt{c} = $opt{C} if exists $opt{C};
 $opt{l} = $opt{L} if exists $opt{L};
 $opt{e} = $opt{E} if exists $opt{E};

	-Joe
--
See http://www.inwap.com/ for PDP-10 and "ReBoot" pages.


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

Date: Fri, 19 Oct 2001 15:56:24 +0800
From: hugo <hugo@fractalgraphics.com.au>
Subject: challence to regex gurus: selecting within selected paragraphs
Message-Id: <3BCFDCA8.F2354BB4@fractalgraphics.com.au>

Hi 

I have a perl script that requires a list of keywords, then searches a
file on these keywords, preserving those paragraphs that match any of
these keywords. However, I would also like to select text within
paragraphs, that is, once I have selected a paragraph for inclusion, I
would like to seach the contents of the paragraph itself, and when I
encounter a within-paragraph exclusion term, from that term to the end
of the paragraph all text should be excluded.

The problem is that my initial while loop goes on a per-paragraph basis,
so I cannot do a within paragraph searches. The per-paragraph search is
set by $/ = '';  and by the gm parameter on the line with the first
while loop (see below).

So where I have the line "if ($dataline[$count2] =~ /$excl_term /m ) {"
where I would like to exclude everyting that comes after the excl_term,
I get a lot of nonsense (all remaining paragraphs excluded). 

I suppose this is a bit of a challenge. Are there any real regex gurus
out there who can help me with this? 

Any help will be greatly appreciated.  

Thanks

Hugo 

Here's the the part of the code that is relevant to the problem.  


$/ = ''; 
open (FILE, $datafile) || die "Could not open $file: $!\nStopped";
 while (defined ($in =<FILE>)) {
 chomp ($in);
  $dataline[$count2] = $in;
       # here I run my datafile over the list of files that determine
inclusion of paragraphs
       # and (so far unsuccessfully) exclusion of lines withing
paragraphs.
       for ($j = 0; $j < $finalcount; $j++) {
       	 $incl_term = $inclusionlist[$j];
       	 $excl_term = $exclusionlist[$j];
       	  chomp $excl_term;
       	  chomp $incl_term;
          while ($dataline[$count2] =~ /^.*$incl_term /gm ) { # /m makes
^ match next to \n
        	$text[$count2] = $in;
       		  if ($dataline[$count2] =~ /^(\S+)+\s(.*)/ ) {  
       	  		# find the first word of the paragraph and compare it to the
inclusion term.
				$firstword = $1;
       	  			if ($firstword eq $incl_term) {
                          	# Here I determine whether the first word of
the paragraph 
                          	# should be saved or not - in this bit of
code it is not.   
       	 			  if ($exclude eq "y") {
       	 			    $text[$count2] =~ s/$1//;
       	 	  			 if ($dataline[$count2] =~ /$excl_term /m ) {
       	 	  			   # here I would like to do my within-paragraph
exclusion.
                                           # but it doesn't work. 
                                         
}	 	  			 		                                                       	  
       	 	  		   } else {
       	 	  		    $text[$count2] =~ s/\s+/ /g;
       	 	  		    }
     	 	  		 		   		  
     	 	  		}	 
     	 	  }	
       	 }
     } 
     	$count2++;  
     	$/ = '';
}




-- 
Dr Hugo Bouckaert
R&D Support Engineer, Fractal Graphics 
57 Havelock Street, West Perth 6005
Western Australia 6009
Tel: +618 9211 6000
Email:hugo@fractalgraphics.com.au
Web: http://www.fractalgraphics.com.au


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

Date: 19 Oct 2001 07:38:08 GMT
From: Bernard El-Hagin <bernard.el-hagin@lido-tech.net>
Subject: Re: charAt???
Message-Id: <slrn9svlm6.ec9.bernard.el-hagin@gdndev25.lido-tech>

On Thu, 18 Oct 2001 12:44:09 -0500, John J. Trammell
<trammell@haqq.hypersloth.invalid> wrote:
> On 18 Oct 2001 14:00:34 GMT, Bernard El-Hagin wrote:
>> On Thu, 18 Oct 2001 08:57:58 -0500, John J. Trammell
>> <trammell@haqq.hypersloth.invalid> wrote:
>> > On 18 Oct 2001 06:48:02 -0700, Markus Dehmann <markus.cl@gmx.de> wrote:
>> >> If I want just one char out of a string - do I have to use substr?
>> >> 
>> >> For example, I want the char number 3:
>> >> $_ = "Markus";
>> >> print substr $_, 3, 1;
>> >> 
>> >> > k
>> >> 
>> >> There is something more efficient, right? I couldn't find something like 
>> >> print charAt $_, 3
>> >> or so! What is it?
>> >> 
>> > 
>> > sub charAt { return substr($_[0],$_[1],1) }
>> 
>> How is that more efficient than substr?
>> 
> 
> Who said anything about more efficient?  I was responding to "... something
> like ... charAt".


I was under the impression that the gist of the OP was efficiency,
but maybe I'm wrong.	


> Personally, StudlyCaps give me the hives.


Couldn't agree more. :-)


Cheers,
Bernard


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

Date: Fri, 19 Oct 2001 05:51:59 -0400
From: Benjamin Goldberg <goldbb2@earthlink.net>
Subject: Re: HELP: Regular expression and grep
Message-Id: <3BCFF7BF.F519A232@earthlink.net>

Paul Shinn wrote:
> 
>    I am driving myself crazy trying to figure out why this regular
> expression will not work.  Maybe I've been looking at it too long.  I
> know there has to be a very simple answer.
> 
> Here's what I'm trying to accomplish:
> 
> I have a file of DNA sequences that looks like this:
> 
> >076C10-76A01.xa 847 0 847 ABI
> ACGAAGTTATGGATCAGGCCAAATCGGCCGAGCTCGAATTCGTCCAGTTA
> ATTAAATTAATCCCCCCCCCCCCCCCCGAGCTCCTTTTTTCTCTATCTCG
> >076C10-76C02.ya 818 0 818 ABI
> GAACATAGAAACGTTAGAAAACCTAATTAAGAACAATCATCACTACTTTT
> ACCCTCGATTTCCCATTCTTCTCATTTCTCTCCACTCTACTTCTCAAATC
> >076C10-76D01.xa 770 0 770 ABI
> TCGTATAGCATACATTATACGAAGTTATGGATCAGGCCAAATCGGCCGAG
> CTCGAATTCGTCGAGTTAATTAAATTAATCCCCCCCCCCCCCCCCCGGAG
> 
> Each ">" denotes a new sequence and the information following it is
> the sequence name and its length.  I have another file that looks like
> this:
> 
> 76D01
> 76C02
> 
>  In a new file, I want to exclude any DNA sequences in file1 that
> match the name in file2.  It's like grepping but getting everything
> else that you're grepping for.  Thanks ahead of time.

use File::Slurp;
my %exclude = map { chomp; $_ => 1 } read_file "exclude.txt";
print for grep { not /-(\w*)\.xa/ && $exclude{$1} }
    split /(?!=^)(?=>)/, scalar read_file "the_dna_data.txt";
__END__

NB: This code is untested.

-- 
"What does stupid old man mean pidgin talk?
Shampoo does not talk like a bird."


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

Date: Fri, 19 Oct 2001 08:03:34 GMT
From: Bart Lateur <bart.lateur@skynet.be>
Subject: Re: how can i make perl retreive a web page and save it to my website?
Message-Id: <nfnvst449ae5p2e1emc4f5mq9tg9r8tlvp@4ax.com>

Lou Moran wrote:

>#!/usr/bin/perl -w
>use LWP::Simple;
>getprint ("http://www.yahoo.com") ;

getprint() will print it. get() will simply retrieve it. getstore() will
save it as a file, which is what the OP asked for.

	use LWP::Simple;
	getstore($url, $file);

It returns the HTTP status, which should be 200 in case of success.

-- 
	Bart.


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

Date: Fri, 19 Oct 2001 00:37:36 -0700
From: Bob <null@null.com>
Subject: Re: How do I disambiguate within the curly braces of a tied hash reference?
Message-Id: <null-AE08D1.00373519102001@cnews.newsguy.com>


> 
> print $datafile{"${foo}G.shtml"};
> 
> If this doesn't do it, we need to see some code.

I had tried that before and ran it from the terminal and the html 
formating was printed to the terminal window, but not the data entry. I 
tried it again by making my desktop 127.0.0.1 and accessing the script 
from the browser and the data entry was printed. I apologize for having 
been mistaken in my first question, now I would like to know why the 
data entry won't appear in the terminal. I am using Mac OS X and by 
"terminal" I mean the CL terminal it comes with. The code is as follows:

#!/usr/bin/perl 


$foo = "37";

dbmopen(%all,'/Library/WebServer/CGI-Executables/all',0777);

print <<EOF;
Content-type: text/html

<html><head><title>test</title></head><body>
EOF

print $all{"${foo}G.shtml"}; # this does not print in the terminal.


print "</body></html>";


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

Date: Fri, 19 Oct 2001 08:07:15 +0000 (UTC)
From: inwap@best.com (Joe Smith)
Subject: Re: How do I disambiguate within the curly braces of a tied hash reference?
Message-Id: <9qomvj$1hcq$1@nntp1.ba.best.com>

In article <null-1810011854110001@user176.lwpw-01.cwia.com>,
Bob <null@null.com> wrote:
>It is my understanding that one disambiguates variable names from
>contigous text by using curly braces as in: 
>
>print "${foo}'s scripts suck";
>
>How does one disambiguate within the curly braces of a reference to a DBM
>data file which already contains opening and closing curly braces?
>
>I want to do this:
>
>print $datafile{$fooG.shtml};
>
>I have tried it several ways without success. $foo is obviously the
>variable and what follows is constant. Disambiguating with curly braces
>has not worked for me. I have tried several combinations of braces and
>quotes.

$datafile{"ABCG.shtml"} = "This is the contents of ABCG.shtml";
$foo="ABC";
print $datafile{"${foo}G.shtml"},"\n";
print qq(Start>$datafile{"${foo}G.shtml"}<End\n);

	-Joe
--
See http://www.inwap.com/ for PDP-10 and "ReBoot" pages.


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

Date: Fri, 19 Oct 2001 08:42:32 +0000 (UTC)
From: inwap@best.com (Joe Smith)
Subject: Re: How do I disambiguate within the curly braces of a tied hash reference?
Message-Id: <9qop1o$1het$1@nntp1.ba.best.com>

In article <null-AE08D1.00373519102001@cnews.newsguy.com>,
Bob  <null@null.com> wrote:
>
>> 
>> print $datafile{"${foo}G.shtml"};
>> 
>> If this doesn't do it, we need to see some code.
>
>I had tried that before and ran it from the terminal and the html 
>formating was printed to the terminal window, but not the data entry. I 
>tried it again by making my desktop 127.0.0.1 and accessing the script 
>from the browser and the data entry was printed. I apologize for having 
>been mistaken in my first question, now I would like to know why the 
>data entry won't appear in the terminal. I am using Mac OS X and by 
>"terminal" I mean the CL terminal it comes with. The code is as follows:
>
>#!/usr/bin/perl 
>
>
>$foo = "37";
>
>dbmopen(%all,'/Library/WebServer/CGI-Executables/all',0777);
>
>print <<EOF;
>Content-type: text/html
>
><html><head><title>test</title></head><body>
>EOF
>
>print $all{"${foo}G.shtml"}; # this does not print in the terminal.

print "<H1>Should be same as ",$all{"37G.shtml"},"</H1>\n";

>print "</body></html>";


1) Verify that the dbm file can be accessed properly with a
   constant key (such as $all{"37G.shtml"}).

2) Or calculate the key in a separate step.
	$key = "${foo}G.shtml";
	print $all{$key};

		-Joe
--
See http://www.inwap.com/ for PDP-10 and "ReBoot" pages.


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

Date: Fri, 19 Oct 2001 10:30:43 +0200
From: olivier laurent <olivier.laurent@archangelis.com>
Subject: Howto use an .exe with Perl under WinNT? 
Message-Id: <3BCFE4B3.AA8C6BB8@archangelis.com>

Hi all,

First of all I'm a complete newbie in the perl world.

Here is my problem

I just created a small script on our intranet. This script has to
execute a program called ert.exe

Its path is:
c:\cert\cert.exe

The command line is for example:
cert English John input.txt output.arch

The Program job is to translate a ASCII file into another format. It
works perfectly well under dos with a command line.

I read the Perl doc and find "system" (look at "this part doesn't work
at all"). But the program is no executed. Everything works except that.

Thanks in advance...I'm completly lost :-/


$text=$param{val};
$voice=$param{voice};
$language=$param{language};

$|=1;
# Modify depending on the language
my $programid=$$;
my $tempath="c:/Program Files/Apache Group/apache/htdocs/Temp";
my $url="http://I_cant_publishit_onusenet.com";

# The full text is saved
open (OUTFILE,,">$tempath/$programid.txt");
print OUTFILE $text,"\n \n";
close OUTFILE;

#This part doesn't work at all
system("c:\\cert\\cert.exe $language $voice \"$tempath/$programid.txt\"
\"$tempath/$programid.arch\" > nul:");

# GET the new file
open(INFO, ,"<$tempath/$programid.arch");
$speechcode=<INFO>;
close (INFO);

# the result
print ("$speechcode")




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

Date: 19 Oct 2001 03:48:31 -0500
From: logan@cs.utexas.edu (Logan Shaw)
Subject: Re: Howto use an .exe with Perl under WinNT?
Message-Id: <9qopcv$6br$1@charity.cs.utexas.edu>

In article <3BCFE4B3.AA8C6BB8@archangelis.com>,
olivier laurent  <olivier.laurent@archangelis.com> wrote:
>#This part doesn't work at all
>system("c:\\cert\\cert.exe $language $voice \"$tempath/$programid.txt\"
>\"$tempath/$programid.arch\" > nul:");

This is just a guess, but I'd try the multi-argument form of system(),
so I'd write this:

    system ('c:\cert\cert.exe', $language, $voice,
	    "$temppath\\$programid.txt", "$temppath\\$programid.arch"
	    );

This leaves out the redirection to NUL:, but otherwise it's a lot
cleaner.

Note that I've changed the slashes to backslashes.  I don't really know
that much about Windows and how pathnames work (and how the shell
evaluates things), but I assume that cert.exe isn't going to know how
to handle regular slashes and it will need backslashes instead.

  - Logan
-- 
"In order to be prepared to hope in what does not deceive,
 we must first lose hope in everything that deceives."

                                          Georges Bernanos


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

Date: Fri, 19 Oct 2001 11:42:49 +0200
From: olivier laurent <olivier.laurent@archangelis.com>
Subject: Re: Howto use an .exe with Perl under WinNT?
Message-Id: <3BCFF599.812D8072@archangelis.com>



Logan Shaw a écrit :

>
> This leaves out the redirection to NUL:, but otherwise it's a lot
> cleaner.

Thanks logan At least I have now an error message coming from the exe ;-)

It seems that the command line isn't valid. Maybe there is no space between
each arguments?

Thanks anyway

Have a nice day, evening night or whatever ;-)

Olivier




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

Date: Fri, 19 Oct 2001 03:52:54 -0400
From: Benjamin Goldberg <goldbb2@earthlink.net>
Subject: Re: need ideas for two-way associative array
Message-Id: <3BCFDBD6.2D0B5639@earthlink.net>

Ted Zlatanov wrote:
> 
> There's no such beast in CPAN AFAIK, so I decided to check with the
> newsgroup.
> 
> Basically, I need to associate two lists with a many-to-many
> relationship.  If the lists are A and B, we need to associate A1 with
> B1, B2, and B3, and A2 with B3 and B1.
> 
> A1 -> { B1, B2, B3 }
> A2 -> { B1, B3 }
> 
> This is easy to do with hashes.  But what if I want to know what the
> associations of B1 (A1 and A2) are?  I have to generate them on the
> fly from the associations in the A list, or I have to keep two
> separate hashes and keep them synchronized.  The first way is
> inefficient, the second way creates a lot of extra work.

Not all that much extra work:

my (%forward, %backward);

# A1 -> { B1, B2, B3 }
$forward{A1}{$_} = $backward{$_}{A1} = 1 for qw(B1 B2 B3);
# A2 -> { B1, B3 }
$forward{A2}{$_} = $backward{$_}{A2} = 1 for qw(B1 B3);

local $" = ", ";
while( my ($a, $b) = each %forward ) {
    print "$a -> ( @{[keys %$b]} )\n";
}
print "\n";
while( my ($b, $a) = each %backward ) {
    print "$b -> ( @{[keys %$a]} )\n";
}

[this code is untested]

-- 
"What does stupid old man mean pidgin talk?
Shampoo does not talk like a bird."


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

Date: Fri, 19 Oct 2001 08:31:36 +0000 (UTC)
From: inwap@best.com (Joe Smith)
Subject: Re: precedence question
Message-Id: <9qood8$1he4$1@nntp1.ba.best.com>

In article <m37kttbgrq.fsf@mumonkan.sunstarsys.com>,
Joe Schaefer  <joe+usenet@sunstarsys.com> wrote:
>Dave Tweed <dtweed@acm.org> writes:
>
>[...]
>
>> The middle expression happens to be an assignment, whose right-hand
>> side gets evaluated before its left-hand side. All as described in the
>> documentation.  
>
>Where exactly in the Perl documentation does it say that the RHS 
>of an assignment always gets _fully evaluated_ *before* the LHS does?

Are you sure that really applies to the current discussion?
The LHS of the comma operator gets evaluated before the RHS.
The precedence of assignment is higher than the precedence of comma.

Consider this:
  $w = 1;
  $_ = ( $x = ++$w, $y = ++$w, $z = ++$w );
  print "w=$w x=$x y=$y z=$z _=$_\n";

The middle statement is executed the same as:
  $x = ++$w; $y = ++$w; $_ = ($z = ++$w);

That is, the expression to the left of the first comma is evaluated first,
then the expression between the two commas, and finally the expression
to the right of the second comma; the last value is returned.
	-Joe
--
See http://www.inwap.com/ for PDP-10 and "ReBoot" pages.


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

Date: Fri, 19 Oct 2001 03:36:55 -0400
From: Benjamin Goldberg <goldbb2@earthlink.net>
Subject: Re: Regex: extracting repeating values like x=a,b,c,d
Message-Id: <3BCFD817.9EA7ACCD@earthlink.net>

Alexander Farber (EED) wrote:
> 
> Hi,
> 
> everyone on c.l.p.m. loves regex problems, right? :-)
> 
> I'm trying to extract the hex addresses from strings like this:
> 
>   PCORR:BLOCK=V5CCH,IA=H'22EF&H'2354&H'4BD4&H'4C4B&H'4D52&H'4DC9;
> 
> with this piece of code:
> 
>   push @addr, hex $1 while /(?:\bI[AS]=|\G&)H'([0-9A-F]{1,4})/g;
> 
>   for my $addr (@addr)
>   {
>       printf "H'%04X\n", $addr;
>   }

How about:

while( m[ \b (I[AS]) = ( H'[0-9A-F]{4} (?: & H'[0-9A-F]{4} )* ) ]gx ) {
    print "Assignment to $1:\n";
    print $_, "\n" foreach split /&/, $2;
}

[untested]

-- 
"What does stupid old man mean pidgin talk?
Shampoo does not talk like a bird."


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

Date: Fri, 19 Oct 2001 03:43:40 -0400
From: Benjamin Goldberg <goldbb2@earthlink.net>
Subject: Re: Regex: extracting repeating values like x=a,b,c,d
Message-Id: <3BCFD9AC.3D4F5388@earthlink.net>

Alexander Farber (EED) wrote:
> 
> Or to rephrase the question, why does this:
> 
>   perl -e 'print $1 while "x=a,b,c,d" =~ /(?:x=|\G,)(\w)/g'
> 
> prints:
> 
>   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa^C
> 
> but this:
> 
>   perl -e 'print $1 while "x=a,b,c,d" =~ /(?:x=|,)(\w)/g'
> 
> prints:
> 
>   abcd

It's a bug in 5.6.0, but not in 5.005_03.
Note that if you use list context, the problem doesn't happen:

perl -wle 'print "x=a,b,c,d" =~ /(?:x=|\G,)(\w)/g'

correctly produces:

abcd

even under perl 5.6.0

Do later perls have this bug?

-- 
"What does stupid old man mean pidgin talk?
Shampoo does not talk like a bird."


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

Date: 19 Oct 2001 07:59:02 GMT
From: rgarciasuarez@free.fr (Rafael Garcia-Suarez)
Subject: Re: Regex: extracting repeating values like x=a,b,c,d
Message-Id: <slrn9svnab.rmg.rgarciasuarez@rafael.kazibao.net>

Benjamin Goldberg wrote in comp.lang.perl.misc:
} Alexander Farber (EED) wrote:
} > 
} > Or to rephrase the question, why does this:
} > 
} >   perl -e 'print $1 while "x=a,b,c,d" =~ /(?:x=|\G,)(\w)/g'
} > 
} > prints:
} > 
} >   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa^C
} > 
} > but this:
} > 
} >   perl -e 'print $1 while "x=a,b,c,d" =~ /(?:x=|,)(\w)/g'
} > 
} > prints:
} > 
} >   abcd
} 
} It's a bug in 5.6.0, but not in 5.005_03.
} Note that if you use list context, the problem doesn't happen:
} 
} perl -wle 'print "x=a,b,c,d" =~ /(?:x=|\G,)(\w)/g'
} 
} correctly produces:
} 
} abcd
} 
} even under perl 5.6.0
} 
} Do later perls have this bug?

Yes (perl 5.6.1 and bleadperl).

-- 
Rafael Garcia-Suarez / http://rgarciasuarez.free.fr/


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

Date: Fri, 19 Oct 2001 10:54:10 +0200
From: "Alexander Farber (EED)" <eedalf@eed.ericsson.se>
To: perl5-porters@perl.org
Subject: Re: Regex: extracting repeating values like x=a,b,c,d
Message-Id: <3BCFEA32.61C9B04B@eed.ericsson.se>

Hi,

I'll copy this to the perl5-porters list. If it's a known
bug, then sorry, please ignore. Please see my reply below:

Benjamin Goldberg wrote:
> Alexander Farber (EED) wrote:
> >
> > Or to rephrase the question, why does this:
> >
> >   perl -e 'print $1 while "x=a,b,c,d" =~ /(?:x=|\G,)(\w)/g'
> >
> > prints:
> >
> >   aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa^C
> >
> > but this:
> >
> >   perl -e 'print $1 while "x=a,b,c,d" =~ /(?:x=|,)(\w)/g'
> >
> > prints:
> >
> >   abcd
> 
> It's a bug in 5.6.0, but not in 5.005_03.
> Note that if you use list context, the problem doesn't happen:
> 
> perl -wle 'print "x=a,b,c,d" =~ /(?:x=|\G,)(\w)/g'
> 
> correctly produces:
> 
> abcd
> 
> even under perl 5.6.0
> 
> Do later perls have this bug?

We luckily have several generations of perl here at work:

maas34:eedalf {114} uname -a
SunOS maas34 5.6 Generic_105181-23 sun4u sparc SUNW,Ultra-5_10

maas34:eedalf {115} gcc -v
Reading specs from /opt/local/gcc-2.95.2/lib/gcc-lib/sparc-sun-solaris2.6/2.95.2/specs
gcc version 2.95.2 19991024 (release)

maas34:eedalf {102} perl5.6.0 -e 'print $1 while "x=a,b,c,d" =~ /(?:x=|\G,)(\w)/g'
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa^C [interrupted]

maas34:eedalf {103} perl5.003 -e 'print $1 while "x=a,b,c,d" =~ /(?:x=|\G,)(\w)/g'
abcd

maas34:eedalf {104} perl5.004 -e 'print $1 while "x=a,b,c,d" =~ /(?:x=|\G,)(\w)/g'
abcd

maas34:eedalf {105} perl5.00503 -e 'print $1 while "x=a,b,c,d" =~ /(?:x=|\G,)(\w)/g'
[nothing]

maas34:eedalf {107} perl5.6.0 -V
Summary of my perl5 (revision 5.0 version 6 subversion 0) configuration:
  Platform:
    osname=solaris, osvers=2.6, archname=sun4-solaris
    uname='sunos aachen 5.6 generic_105181-12 sun4u sparc sunw,ultra-250 '
    config_args='-Dcc=/opt/local/gcc-2.95.2/bin/gcc -Dprefix=/opt/local/perl-5.6.0 -Dlocincpth=/opt/local/berkeleyDB/include -Dloclibpth=/opt/local/berkeleyDB/lib -Uinstallusrbinperl -Uusenm'
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef
    useperlio=undef d_sfio=undef uselargefiles=define 
    use64bitint=undef use64bitall=undef uselongdouble=undef usesocks=undef
  Compiler:
    cc='/opt/local/gcc-2.95.2/bin/gcc', optimize='-O', gccversion=2.95.2 19990816 (release)
    cppflags='-fno-strict-aliasing -I/opt/local/berkeleyDB/include'
    ccflags ='-fno-strict-aliasing -I/opt/local/berkeleyDB/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64'
    stdchar='unsigned char', d_stdstdio=define, usevfork=false
    intsize=4, longsize=4, ptrsize=4, doublesize=8
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, usemymalloc=y, prototype=define
  Linker and Libraries:
    ld='/opt/local/gcc-2.95.2/bin/gcc', ldflags =' -L/opt/local/berkeleyDB/lib '
    libpth=/opt/local/berkeleyDB/lib /lib /usr/lib /usr/ccs/lib /usr/local/lib
    libs=-lsocket -lnsl -ldb -ldl -lm -lc -lcrypt -lsec
    libc=, so=so, useshrplib=false, libperl=libperl.a
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
    cccdlflags='-fPIC', lddlflags='-G -L/opt/local/berkeleyDB/lib'

Characteristics of this binary (from libperl): 
  Compile-time options: USE_LARGE_FILES
  Built under solaris
  Compiled at Oct 11 2000 12:57:10
  %ENV:
    PERL5LIB="/home/eedalf/lib/site_perl/5.6.0/sun4-solaris:/home/eedalf/lib/site_perl/5.6.0"
  @INC:
    /home/eedalf/lib/site_perl/5.6.0/sun4-solaris
    /home/eedalf/lib/site_perl/5.6.0/sun4-solaris
    /home/eedalf/lib/site_perl/5.6.0
    /opt/local/perl-5.6.0/lib/5.6.0/sun4-solaris
    /opt/local/perl-5.6.0/lib/5.6.0
    /opt/local/perl-5.6.0/lib/site_perl/5.6.0/sun4-solaris
    /opt/local/perl-5.6.0/lib/site_perl/5.6.0
    /opt/local/perl-5.6.0/lib/site_perl
    .
maas34:eedalf {108} perl5.00503 -V
Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration:
  Platform:
    osname=solaris, osvers=2.6, archname=sun4-solaris-thread
    uname='sunos demand 5.6 generic_105181-06 sun4u sparc sunw,ultra-2 '
    hint=recommended, useposix=true, d_sigaction=define
    usethreads=define useperlio=undef d_sfio=undef
  Compiler:
    cc='/opt/SC4.2/SUNWspro/bin/cc', optimize='-xO4', gccversion=
    cppflags='-D_REENTRANT -I/vobs/itools/plib/include'
    ccflags ='-D_REENTRANT -I/vobs/itools/plib/include'
    stdchar='unsigned char', d_stdstdio=define, usevfork=false
    intsize=4, longsize=4, ptrsize=4, doublesize=8
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    alignbytes=8, usemymalloc=y, prototype=define
  Linker and Libraries:
    ld='/opt/SC4.2/SUNWspro/bin/cc', ldflags ='-L/vobs/itools/plib/lib -R /opt/confix/lib/lib -L/vobs/itools/perl/lib'
    libpth=/cc/demand/buildtmp/perl5.005_03-MAINT_TRIAL_5 /vobs/itools/perl/lib /vobs/itools/plib/lib /usr/lib /usr/ccs/lib /usr/op
enwin/lib /usr/dt /vobs/itools/gnu/lib /vobs/itools/gnu/lib /all/gnu/lib
    libs=-lsocket -lnsl -lgdbm -ldb -ldl -lm -lposix4 -lpthread -lc -lcrypt
    libc=/lib/libc.so, so=so, useshrplib=true, libperl=libperl.so
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='  -R /vobs/itools/perl/lib/5.00503/sun4-solaris-thread/CORE'
    cccdlflags='-KPIC', lddlflags='-G -L/vobs/itools/plib/lib -L/vobs/itools/perl/lib'

Characteristics of this binary (from libperl): 
  Locally applied patches:
        MAINT_TRIAL_5 - 5.005_03 maintenance trial 5
  Built under solaris
  Compiled at Feb  8 1999 21:18:13
  %ENV:
    PERL5LIB="/home/eedalf/lib/site_perl/5.6.0/sun4-solaris:/home/eedalf/lib/site_perl/5.6.0"
    PERLWRAP_DIR_VIEW="** NONE **"
    PERLWRAP_ROOT_PROCESS="14094"
    PERLWRAP_SET_VIEW="** NONE **"
  @INC:
    /home/eedalf/lib/site_perl/5.6.0/sun4-solaris
    /home/eedalf/lib/site_perl/5.6.0
    /vobs/itools/perl/lib/5.00503/sun4-solaris-thread
    /vobs/itools/perl/lib/5.00503
    /vobs/itools/perl/lib/site_perl/5.005/sun4-solaris-thread
    /vobs/itools/perl/lib/site_perl/5.005
    .


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

Date: Fri, 19 Oct 2001 10:56:13 +0200
From: "Alexander Farber (EED)" <eedalf@eed.ericsson.se>
Subject: Re: Regex: extracting repeating values like x=a,b,c,d
Message-Id: <3BCFEAAD.7C9D1C61@eed.ericsson.se>

Hi,

Tad McClellan wrote:
> Alexander Farber (EED) <eedalf@eed.ericsson.se> wrote:
> 
> >I'm trying to extract the hex addresses from strings like this:
> >
> >  PCORR:BLOCK=V5CCH,IA=H'22EF&H'2354&H'4BD4&H'4C4B&H'4D52&H'4DC9;
> 
> [ snip code and code adjustments ]
> 
> >But then it would also match "lonely" strings like BLAH&H'4BD4
> >also when they are not prepended by the assignment IA=...
> >
> >I wonder if there are some nice ways to solve this problem or
> >should I construct some (?<=IA=...) monster?
> 
> Can there be more than one "IA=" or "IS=" on a line?
> 
> My solution assumes you do not have more than one per line.
> 
> I'd destroy the string (make a copy to destroy if you will need
> it later):
> 
>    if ( s/(.*)\bI[AS]=/&/ ) {  # "trick" the edge case
>       push @addr, /\G&H'([0-9A-F]{1,4})/g;
>    }

there is only one IA= or IS+ on a line so your solution would 
work too. Thank you all very much for your replies. But I'm
actually intrigued by the paragraphs in "perldoc perlop":

             You can intermix `m//g' matches with `m/\G.../g',
             where `\G' is a zero-width assertion that matches
             the exact position where the previous `m//g', if
             any, left off. 

             A useful idiom for `lex'-like scanners is
             `/\G.../gc'.  You can combine several regexps like
             this to process a string part-by-part, doing
             different actions depending on which regexp matched.
             Each regexp tries to match where the previous one
             leaves off.

Can this maybe used somehow and it would also work for several
I[AS]= assignments on a line? 

Regards
Alex

PS: I use maas34:eedalf {108} perl -v

This is perl, v5.6.0 built for sun4-solaris


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

Date: Fri, 19 Oct 2001 03:16:37 -0400
From: Benjamin Goldberg <goldbb2@earthlink.net>
Subject: Re: Scaling a DNA string
Message-Id: <3BCFD355.4713F8E3@earthlink.net>

DocDodge wrote:
> 
> Hi,
> 
> I've finally arrived back were I can post to this newsgroup, and I see
> that people have been posting great responses all day long.  The
> answer to my problem might lie in this thread; it will take me a while
> to wrap my mind around some of the more complicated perl.  But her is
> a clarification of the biology of the problem.
> 
> Martien is right; I am just looking for some decent compression so
> that the data is more visually manageable.  What I didn't tell you is
> that I have hundreds of these strings, that correspond to hundreds of
> genes and that I'm going to need to print this out on ordinary letter
> size paper.  Here is what that might look like when done (requires a
> non-proportional font to look right):
> 
> --------G--------------------G---------- gene A
> ----------------CG--G------------------- gene B
> ---------------G-G-C--C----------------- gene C
> -----------G---------------------------- gene D
> ---------------------------------------- gene E
> --C------------------------------------- gene F
> ---------------GGG--C--G------------G--- gene G
> ---------------------------------------- gene H
> -----------C---------------------------- gene I
> 
> In this example, each string was derived from 2000 characters, so each
> dash or letter represents 50 characters.  A dash means that in those
> 50 characters, no motifs are found.  A "G" or "C" means that in those
> 50 characters, one or more motifs were found.

[snip]
> Martin asked the clever question:
> 
> "GGGG--CCCC" => G or C or something else?
> 
> "GGGG-GGGG-" => Only one G? or something else?
> 
> To the latter, initially I called a single GGGG in a region "g" while
> more than one motif garnered a "G", but when I started to have trouble
> scaling I eliminated that complications from my code.  The answer to
> the former is the same.  It would be usefully to call a region with
> both GGGG and CCCC in it some other letter (S perhaps)

> He also asked what I want to do with motifs that straddle the
> boundary.  The answer is, put the mark on one side or the other but
> not both.  Which side does not really matter, in the total 2000
> characters I won't be off by that much.
> 
> Some wonder what exactly defines a motif.  Is it GGGG or GGGGG  and is
> GGGGGGGG one motif or two.  The answer is flexible.  Eight G's in a
> row is certainly two motifs; four G's is one motif.  Between 4 and 8

When compressing 2000 characters to, say, 40, the odds are that a pair
of adjacent motifs of the same type will map to the same output slot.

This sortof makes it a non-issue.

> could be one or two motifs, whatever is easier to implement.  I've
> been calling it one motif for now.

#!/usr/local/bin/perl5.6 -w
$_ = "ACGACGTCCAGGGGGGTTGTTACGTCCCCAATCAGTCGGGGCTATTCAGTC";
my $scale = 4;
my $motifs = '';
vec( $motifs, $+[0]/$scale, 2 ) |= 1 while m/G{4}/g;
vec( $motifs, $+[0]/$scale, 2 ) |= 2 while m/C{4}/g;
my @marks = qw(- G C S);
print @marks[map vec($motifs,$_,2), 0..length($_)/$scale], "\n";
__END__

This [tested!] code prints:
---G---C--G--

For big strings, set $scale to something bigger, like 50.

Or, if you want output more "cleverly" scaled, change it to:
my $scale = length($_) / 72; # where 72 is the width of your screen.

-- 
"What does stupid old man mean pidgin talk?
Shampoo does not talk like a bird."


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

Date: Fri, 19 Oct 2001 05:33:04 -0400
From: Benjamin Goldberg <goldbb2@earthlink.net>
Subject: Re: taint unique to Perl?
Message-Id: <3BCFF34F.43D4F044@earthlink.net>

Martien Verbruggen wrote:
> 
> On 18 Oct 2001 15:17:09 -0700,
>         Miko O'Sullivan <miko@idocs.com> wrote:
> >
> > Is tainting unique to Perl?  What other languages, if any, have this
> > cool built-in concept?   I'm writing a presentation about Perl and
> > I'll use tainting as one of the selling points for Perl, but it
> > would help to know if any other languages use tainting also.
> 
> The Java sandbox is a security feature that's part of the language,
> although its implementation and what it does is very different from
> Perl's tainting mechanism.

Not to mention, perl has sandbox features itself, Safe and Penguin.

> The idea behind it is also different. Perl's tainting mechanism was
> originally created to make setuid programs more secure, while Java's
> sandbox model was created to prevent you from accidentally running
> malicious code that you download from an untrusted source.

Right... that's exactly what Penguin is for in perl.

-- 
"What does stupid old man mean pidgin talk?
Shampoo does not talk like a bird."


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

Date: Fri, 19 Oct 2001 02:57:01 -0500 (CDT)
From: dennis100@webtv.net (BUCK NAKED1)
Subject: Tar failure with Pipe Open
Message-Id: <10325-3BCFDCCD-213@storefull-247.iap.bryant.webtv.net>

I remember that using tar with the -z (gunzip) option causes tar to
return a value of 0 in $? for both success and failure. After reviewing
that previous discussion, I had forgot that Ben recommended using a pipe
for testing tar.
He also recommended using a filetest operator, but I couldn't get that
to work. I decided to just test success based on retrieving a list of
files (-t) and later exec tar based on that. Is the coding below OK? It
seems to work.

open( TEST, "tar -ztf $tmpfile |" ); 
  if ( <TEST> eq "" )  { 
     print "Tar TEST Failed!\n"; 
     close TEST; exit;
};

Regards,
Dennis



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

Date: Fri, 19 Oct 2001 05:15:12 -0400
From: Benjamin Goldberg <goldbb2@earthlink.net>
Subject: Re: Tar failure with Pipe Open
Message-Id: <3BCFEF20.6C452419@earthlink.net>

BUCK NAKED1 wrote:
> 
> I remember that using tar with the -z (gunzip) option causes tar to
> return a value of 0 in $? for both success and failure. After
> reviewing that previous discussion, I had forgot that Ben recommended
> using a pipe for testing tar.

I mentioned it was possible, I didn't *recommend* it.

> He also recommended using a filetest operator, but I couldn't get that
> to work.

What do you mean when you say that it didn't work?

> I decided to just test success based on retrieving a list of
> files (-t) and later exec tar based on that. Is the coding below OK?
> It seems to work.
> 
> open( TEST, "tar -ztf $tmpfile |" );
>   if ( <TEST> eq "" )  {
>      print "Tar TEST Failed!\n";
>      close TEST; exit;
> };

Sure, I guess it may work, but it doesn't give you the ability to
seperately learn the success or failure of the gunzip and tar
operations.

The way *I* would do it, would be:

use IPC::Open2;

open( TMPFILE, "<$tmpfile" )
    or die "Couldn't open $tmpfile for reading: $!";

my $g_pid = open2(FROM_GUNZIP, "<&TMPFILE", "gunzip", "-c", "-d");
my $t_pid = open2(FROM_TAR, "<&FROM_GUNZIP", "tar", "tf", "-");

if( my @tar_output = <FROM_TAR> ) {
   print "Success!  The tar file contains the following:\n";
   print @tar_output;
} else {
   print "Failure!\n";
   print "Either the tar file empty, or something screwed up.\n";
}

if( waitpid $g_pid, 0 ) {
    my ($sig, $ret) = ($? & 255, $? >> 8);
    die "gunzip died from signal $sig" if $sig;
    die "gunzip exited with code $ret" if $ret;
} else {
    die "Somebody musta reaped my gunzip process: $!";
}

if( waitpid $t_pid, 0 ) {
    my ($sig, $ret) = ($? & 255, $? >> 8);
    die "tar died from signal $sig" if $sig;
    die "tar exited with code $ret" if $ret;
} else {
    die "Somebody musta reaped my tar process: $!";
}

END: {
    kill SIGKILL => $g_pid, $t_pid;
}
__END__

This [untested] code should be more portable than using tar with the -z
option, since many versions of tar don't support that.  And of course
with this you can explicitly, *seperately*, check for the success or
failure of gunzip and tar.

-- 
"What does stupid old man mean pidgin talk?
Shampoo does not talk like a bird."


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

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.  

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 V10 Issue 1962
***************************************


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