
ternary operator
I have a ternary operator that I would like to be rounded to the nearest te=
nth decimal place before the array is pushed.
For example:
I would like the current output of my ternary operator: 2.44318181818182 t=
o be rounded to 2.4.
Below is what my code looks like:
#!/usr/bin/perl
use warnings;
use strict;
# my $filepath =3D 'C:/temp/PCMD';
my $filepath =3D '/home/cstinemetz/perl_programs/1.EVDOPCMD';
my $outfile =3D 'output.txt';
open my $fh, '<', $filepath or die "ERROR opening $filepath: $!";
open my $out, '>', $outfile or die "ERROR opening $outfile: $!";
my %sum;
while (<$fh>){
next unless /;/;
chomp;
my [at] data =3D split /;/;
my($cell,$sect,$chan,$carr,$rlp1,$rlp2,$rlp3,$rlp4,$dist,$pr ecis) =3D
[at] data[31,32,38,39,44,45,46,47,261,262];
$carr =3D
( $cell < 299 && $chan =3D=3D 175 ) ? 2 :
( $chan =3D=3D 1025 ) ? 2 : 1 ; #nested ternary operator
=09
$dist =3D
( length( $dist ) > 1 ) ? $dist/6.6/8/2*10/10 : 0 ; ##### I would like to=
round the number to the nearest tenth right here. ########
=09
$sum{$cell}{$sect}{$carr}{$dist} +=3D $rlp1 +=3D $rlp2 +=3D $rlp3 +=3D $rl=
p4 || 0 ; }
=09
#=3D~ m/^-?\d+$/)
#my $marketInfo =3D '';
#if ($data[31] =3D~ m/^-?\d+$/) { #### regular expression for real nume=
rical value
# my $mkt =3D getMarket($data[31]);
my [at] data;
for my $cell ( sort keys %sum ) {
for my $sect ( sort keys %{$sum{$cell}} ) {
for my $carr ( sort keys %{$sum{$cell}{$sect}} ) {
for my $dist ( sort keys %{$sum{$cell}{$sect}{$carr}} ) {
push( [at] data, [ $sum{$cell}{$sect}{$carr}{$dist}, $cell, $sect, $carr, =
$dist,]);=09
}
}
}
}
for my $record ( sort {
$a->[1] <=3D> $b->[1] ||
$a->[2] <=3D> $b->[2] ||
$a->[3] <=3D> $b->[3] ||
$a->[4] <=3D> $b->[4] } [at] data ) {
my( $val, $cell, $sect, $carr, $dist ) =3D [at] $record;
print $out "$cell\t $sect\t $carr\t $dist\t $val\n"; }
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
Re: ternary operator
On 11-03-24 04:53 PM, Chris Stinemetz wrote:
> I would like the current output of my ternary operator: 2.44318181818182 to be rounded to 2.4.
The easiest way is to use sprintf;
perl -e '$var = sprintf "%.1f", 2.44318181818182; print "$var\n";'
--
Just my 0.00000002 million dollars worth,
Shawn
Confusion is the first step of understanding.
Programming is as much about organization and communication
as it is about coding.
The secret to great software: Fail early & often.
Eliminate software piracy: use only FLOSS.
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
Re: ternary operator
On Thu, Mar 24, 2011 at 16:53, Chris Stinemetz
<cstinemetz [at] cricketcommunications.com> wrote:
> I have a ternary operator that I would like to be rounded to the nearest =
tenth decimal
> place before the array is pushed.
The proper term is conditional operator, even in C.
Rounding is a tricky subject (see
http://en.wikipedia.org/wiki/Rounding for the gory details), that is
why Perl 5 does not provide a simple rounding function for you. Do
you have a rounding method in mind, or you just happy with whatever
you get?
snip
> =C2=A0 =C2=A0 =C2=A0 =C2=A0$dist =3D
> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0( length( $dist ) =
> 1 ) ? $dist/6.6/8/2*10/10 : 0 ; ##### I would like to round the number to=
the nearest tenth right here. ########
snip
As for how to combine a function call with a conditional, it is simple:
sub round {
my ($n, $places) =3D [at] _;
return sprintf "%.${places}f", $n; #I don't care how the number is roun=
ded
}
$dist =3D ( length( $dist ) > 1 ) ? round($dist/6.6/8/2*10/10, 1) : 0;
--
Chas. Owens
wonkden.net
The most important skill a programmer can have is the ability to read.
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
Re: ternary operator
Chas. Owens wrote:
> On Thu, Mar 24, 2011 at 16:53, Chris Stinemetz
> <cstinemetz [at] cricketcommunications.com> wrote:
>> I have a ternary operator that I would like to be rounded to the nearest tenth decimal
>> place before the array is pushed.
>
> The proper term is conditional operator, even in C.
>
> Rounding is a tricky subject (see
> http://en.wikipedia.org/wiki/Rounding for the gory details), that is
> why Perl 5 does not provide a simple rounding function for you. Do
> you have a rounding method in mind, or you just happy with whatever
> you get?
>
> snip
>> $dist =
>> ( length( $dist )> 1 ) ? $dist/6.6/8/2*10/10 : 0 ; ##### I would like to round the number to the nearest tenth right here. ########
> snip
>
> As for how to combine a function call with a conditional, it is simple:
>
> sub round {
> my ($n, $places) = [at] _;
> return sprintf "%.${places}f", $n; #I don't care how the number is rounded
Usually written as:
return sprintf '%.*f', $places, $n; #I don't care how the number
is rounded
> }
>
> $dist = ( length( $dist )> 1 ) ? round($dist/6.6/8/2*10/10, 1) : 0;
John
--
Any intelligent fool can make things bigger and
more complex... It takes a touch of genius -
and a lot of courage to move in the opposite
direction. -- Albert Einstein
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
Re: ternary operator
I am getting the warning:
Argument "" isn't numeric in numeric lt (<) at ./DOband.pl line 22,
<$fh> line 52411.
It seems to be directed to the below ternary operator:
How can I include in the ternary to ignore all non numeric values in
the elements $cell and $chan?
my $carr =
( $cell < 299 && $chan == 175 ) ? 2 :
( $chan == 1025 ) ? 2 : 1 ; #nested ternary operator
Thank you,
Chris
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
Re: ternary operator
On 3/25/11 Fri Mar 25, 2011 11:15 AM, "Chris Stinemetz"
<chrisstinemetz [at] gmail.com> scribbled:
> I am getting the warning:
>
> Argument "" isn't numeric in numeric lt (<) at ./DOband.pl line 22,
> <$fh> line 52411.
>
> It seems to be directed to the below ternary operator:
> How can I include in the ternary to ignore all non numeric values in
> the elements $cell and $chan?
>
> my $carr =
>
> ( $cell < 299 && $chan == 175 ) ? 2 :
> ( $chan == 1025 ) ? 2 : 1 ; #nested ternary operator
>
According to the error message, $cell contains "", the empty string. Perl is
objecting to the attempt to compare that value with 299. The solution is to
either 1) don't attempt the comparison if $cell is an empty string or 2) set
$cell to a valid numerical value if it contains an empty string.
For the former case, you can use an if statement:
if( $cell ) {
...
but that will eliminate cases where $cell has a possibly valid value of
zero.
For the latter case, the value zero is a natural substitute, but only you
can say if this is a valid thing to do in your situation. The normal way to
do this is:
$cell = $cell || 0;
This assigns numerical zero to $cell if it's current value evaluates to
false (undef, 0, or ''). This may be shortened to:
$cell ||= 0;
This substitution can also be done in some cases when a value is assigned to
the variable, e.g.:
$cell = $data[1] || 0;
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
Re: ternary operator
There is no possible value of 0 for what I am trying to do. So I am
trying to do the former example:
> if( $cell ) {
I am trying to code the if statement correctly, but I am getting a syntax error:
Below is how I am trying to code the if statement:
if ($cell >= 1 && $cell <= 900 ) { $cell = $cell ;
Thank you,
Chris
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
Re: ternary operator
On 3/25/11 Fri Mar 25, 2011 1:19 PM, "Chris Stinemetz"
<chrisstinemetz [at] gmail.com> scribbled:
> There is no possible value of 0 for what I am trying to do. So I am
> trying to do the former example:
>
>> if( $cell ) {
You are leaving out context here, so people not familiar with this thread
will be less likely to help you. To what "former example" are you referring?
>
> I am trying to code the if statement correctly, but I am getting a syntax
> error:
> Below is how I am trying to code the if statement:
>
> if ($cell >= 1 && $cell <= 900 ) { $cell = $cell ;
That is not the if statement you were advised to use (see above).
You are missing a closing brace in that line. Is that the problem? What
syntax error are you getting? You haven't included the rest of your program,
so we can't tell if the closing brace occurs later.
In the statement:
if( $cell )
$cell is evaluated for true or false. All scalar values are valid in this
evaluation, including numerical, string, and undef, the three types of Perl
scalar values.
On the other hand, in this statement:
if( $cell >= 1 && $cell <= 900 ) { ... }
$cell is used in a numerical context. If $cell is undefined, you may get a
warning. Are you getting a runtime warning?
Please work harder at providing the optimal amount of information in your
posts. A complete, compilable, runnable program that is as short as possible
that demonstrates the problem you are having is best.
Thanks.
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
Re: ternary operator
>
> In the statement:
>
> =A0 =A0if( $cell )
>
> $cell is evaluated for true or false. All scalar values are valid in this
> evaluation, including numerical, string, and undef, the three types of Pe=
rl
> scalar values.
>
> On the other hand, in this statement:
>
> =A0 =A0if( $cell >=3D 1 && $cell <=3D 900 ) { ... }
>
I am getting a runtime error when I use the above if statement. My
goal is to only evaluate the $cell element which contain
the numerical value 1 through 900. Below is my error I am getting and
my program.
syntax error at ./DOband.pl line 22, near "{ ..."
Execution of ./DOband.pl aborted due to compilation errors.
#!/usr/bin/perl
use warnings;
use strict;
#my $filepath =3D 'C:/temp/PCMD';
my $filepath =3D '/home/cstinemetz/perl_programs/1.EVDOPCMD';
my $outfile =3D 'output.txt';
open my $fh, '<', $filepath or die "ERROR opening $filepath: $!";
open my $out, '>', $outfile or die "ERROR opening $outfile: $!";
my %sum;
while (<$fh>){
next unless /;/;
chomp;
my [at] data =3D split /;/;
my($cell,$sect,$chan,$rlp1,$rlp2,$rlp3,$rlp4,$dist) =3D
[at] data[31,32,38,44,45,46,47,261];
if( $cell >=3D 1 && $cell <=3D 900 ) { ... } ### This is where I am
getting my runtime error
=09
my $carr =3D
=09
( $cell <=3D 299 && $chan =3D=3D 175 ) ? 2 :
( $cell >=3D 300 && $cell <=3D 599 && $chan =3D=3D 75 ) ? 2 :
( $chan =3D=3D 1025 ) ? 2 : 1 ; #nested
ternary operator
=09
=09
=09
$dist =3D sprintf "%.1f",
( length( $dist ) > 1 ) ? $dist/6.6/8/2*10/10 : 0 ;=09
=09
for my $i (44..47) {
my $rlp =3D $data[$i];
$sum{$cell}{$sect}{$carr}{$dist} +=3D $rlp if $rlp;
}=09
}
=09
my [at] data;
for my $cell ( sort keys %sum ) {
for my $sect ( sort keys %{$sum{$cell}} ) {
for my $carr ( sort keys %{$sum{$cell}{$sect}} ) {
for my $dist ( sort keys %{$sum{$cell}{$sect}{$carr}} ) {
push( [at] data, [ $sum{$cell}{$sect}{$carr}{$dist}, $cell, $sect,
$carr, $dist,]);
}
}
}
}
for my $record ( sort {
$a->[1] <=3D> $b->[1] ||
$a->[2] <=3D> $b->[2] ||
$a->[3] <=3D> $b->[3] ||
$a->[4] <=3D> $b->[4] } [at] data ) {
my( $val, $cell, $sect, $carr, $dist ) =3D [at] $record;
print $out "$cell\t $sect\t $carr\t $dist\t $val\n"; }
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
Re: ternary operator
At 7:01 AM -0500 3/26/11, Chris Stinemetz wrote:
> >
>> In the statement:
>>
>> if( $cell )
>>
>> $cell is evaluated for true or false. All scalar values are valid in this
>> evaluation, including numerical, string, and undef, the three types of Perl
>> scalar values.
>>
>> On the other hand, in this statement:
>>
>> if( $cell >= 1 && $cell <= 900 ) { ... }
>>
>
>I am getting a runtime error when I use the above if statement. My
>goal is to only evaluate the $cell element which contain
>the numerical value 1 through 900. Below is my error I am getting and
>my program.
>
>syntax error at ./DOband.pl line 22, near "{ ..."
>Execution of ./DOband.pl aborted due to compilation errors.
That line is not valid Perl syntax. When I posted that example line,
I assumed that you would know enough to substitute the '...' with the
actual code that you wanted to execute if the value of $cell was
between 1 and 900. My apologies.
I would not classify the error you have shown as a "runtime" error.
It would be better described as a "compile-time" error, because it
violates Perl syntax, and your program never starts executing. While
with Perl, the compile phase and the execution phase are performed as
one step by the user, there are nevertheless separate compile and
execution phases.
If you are unsure which phase is encountering an error, you can
perform just the compilation phase with the -c option to Perl:
perl -c yourprogram.pl
Perl compiles your program and checks its syntax, but does not execute it.
Please put valid Perl statements to replace { ... } and try again.
And please do not blindly copy whatever people have posted. It is up
to you to understand the meaning behind code examples of that sort
and adapt them to your own needs.
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
RE: ternary operator
Jim,
Thank you for the clarification and the "perl -c yourprogram.pl" tip. It wo=
rks the way I want it to now. You have been very helpful.
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
Re: ternary operator
I would like to make an adjustment to this ternary operator.
Instead of returning 0 if length( $dist ) is not > 1. I would like to
return the last $dist value incremented by 0.1 mile so there is no gap
of more than 0.1 miles.
$dist = sprintf "%.1f",
( length( $dist ) > 1 ) ? $dist/6.6/8/2*10/10 : 0 ;
below is my full program:
#!/usr/bin/perl
use warnings;
use strict;
use POSIX;
my $filepath = '/home/cstinemetz/perl_programs/1.EVDOPCMD';
my $runTime = sprintf("/cygdrive/c/temp/%s.txt",strftime("%y%m%d%H%M",loca ltime));
my $fileDate = strftime("%y%m%d%H%",localtime);
open my $fh, '<', $filepath or die "ERROR opening $filepath: $!";
open my $out, '>', $runTime or die "ERROR opening $runTime: $!";
my $time = localtime;
my %sum;
while (<$fh>){
next unless /;/;
chomp;
my [at] data = split /;/;
my($cell,$sect,$chan,$rlp1,$rlp2,$rlp3,$rlp4,$dist) =
[at] data[31,32,38,44,45,46,47,261];
if( $cell >= 1 && $cell <= 900 && $sect >= 1 && $sect <= 6 ) {
my $carr =
( $cell <= 299 && $chan == 175 ) ? 2 :
( $cell >= 300 && $cell <= 599 && $chan == 75 )
? 2 :
( $chan == 1025 ) ? 2 : 1 ; #nested ternary operator
$dist = sprintf "%.1f",
( length( $dist ) > 1 ) ? $dist/6.6/8/2*10/10 : 0 ; ##### would
like to return increment of 0.1 if $dist < 1 #######
for my $i (44..47) {
my $rlp = $data[$i];
$sum{$cell}{$sect}{$carr}{$dist} += $rlp if $rlp;
}
}
}
my [at] data;
for my $cell ( sort keys %sum ) {
for my $sect ( sort keys %{$sum{$cell}} ) {
for my $carr ( sort keys %{$sum{$cell}{$sect}} ) {
for my $dist ( sort keys %{$sum{$cell}{$sect}{$carr}} ) {
push( [at] data, [ $sum{$cell}{$sect}{$carr}{$dist}, $cell, $sect,
$carr, $dist,]);
}
}
}
}
for my $record ( sort {
$a->[1] <=> $b->[1] ||
$a->[2] <=> $b->[2] ||
$a->[3] <=> $b->[3] ||
$a->[4] <=> $b->[4] } [at] data ) {
my( $val, $cell, $sect, $carr, $dist ) = [at] $record;
print $out "$time\t $cell\t $sect\t $carr\t $dist\t $val\n";
}
close $out;
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
Re: ternary operator
On 3/28/11 Mon Mar 28, 2011 12:44 PM, "Chris Stinemetz"
<chrisstinemetz [at] gmail.com> scribbled:
> I would like to make an adjustment to this ternary operator.
> Instead of returning 0 if length( $dist ) is not > 1. I would like to
> return the last $dist value incremented by 0.1 mile so there is no gap
> of more than 0.1 miles.
>
> $dist = sprintf "%.1f",
> ( length( $dist ) > 1 ) ? $dist/6.6/8/2*10/10 : 0 ;
Save the value of $dist in another variable, e.g. $prev_dist. Make sure that
the scope of the variable is outside the loop so that the value of
$prev_dist will persist from one iteration of the loop to the next.
Substitute the expression ($prev_dist + 0.1) for the 0 in the above
expression.
(Please post your queries to just the list and do not email individuals.
Thanks.)
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/
Re: ternary operator
>>>>> "CS" == Chris Stinemetz <chrisstinemetz [at] gmail.com> writes:
CS> I would like to make an adjustment to this ternary operator.
CS> Instead of returning 0 if length( $dist ) is not > 1. I would like to
CS> return the last $dist value incremented by 0.1 mile so there is no gap
CS> of more than 0.1 miles.
one point i want to make to you (if you would listen) is you need to
isolate logical perl things from each other. you don't modify a ternary
operator. you change the expressions it uses. you can say you want to
modify the conditional expression. in a earlier post it seemed like you
tied the conditional expression operator to the expressions it was
using. they are independent as are all perl expressions from their
operators. a classic version of this is when newbies talk about the <<
option to print (<< is a here document which is commonly used but
independent from print). i am telling this to you because clarifying how
you write and talk about perl (or any language) will help you in
describing problems accurately and logically which always helps in
solving them.
CS> my $filepath = '/home/cstinemetz/perl_programs/1.EVDOPCMD';
CS> my $runTime = sprintf("/cygdrive/c/temp/%s.txt",strftime("%y%m%d%H%M",loca ltime));
CS> my $fileDate = strftime("%y%m%d%H%",localtime);
CS> open my $fh, '<', $filepath or die "ERROR opening $filepath: $!";
CS> open my $out, '>', $runTime or die "ERROR opening $runTime: $!";
that should say 'creating' $runTime as you are writing to it. you get
different errors when opening for reading (e.g. 'nonexisting file) vs
writing (e.g. no permission to write a file).
CS> my $time = localtime;
why do you get the time again? call localtime once and use the $time var
for the strftime call.
CS> my %sum;
CS> while (<$fh>){
CS> next unless /;/;
CS> chomp;
CS> my [at] data = split /;/;
CS> my($cell,$sect,$chan,$rlp1,$rlp2,$rlp3,$rlp4,$dist) =
CS> [at] data[31,32,38,44,45,46,47,261];
again, use better names. anytime you see vars with integer suffixes,
think array. [at] rpl can hold the 4 values. if you want that at the end
(since arrays will slurp all the rest of the elements) you can reorder
the slice indices:
my( $cell, $sect, $chan, $dist, [at] rlp ) =
[at] data[31, 32, 38, 261, 44 .. 47];
i also put spaces in there and made the [at] rlp indicies a range which is
easier to read and check.
CS> if( $cell >= 1 && $cell <= 900 && $sect >= 1 && $sect <= 6 ) {
CS> my $carr =
why is that not indented from the preceding if block? always indent inside a
new block.
CS> ( $cell <= 299 && $chan == 175 ) ? 2 :
CS> ( $cell >= 300 && $cell <= 599 && $chan == 75 )
CS> ? 2 :
CS> ( $chan == 1025 ) ? 2 : 1 ; #nested ternary operator
useless comment. it is obvious what that is.
CS> $dist = sprintf "%.1f",
CS> ( length( $dist ) > 1 ) ? $dist/6.6/8/2*10/10 : 0 ; ##### would
CS> like to return increment of 0.1 if $dist < 1 #######
stop putting comments on the line of code. it make the line wrap even
more (fix the wrapping too) and makes it hard to read.
CS> for my $i (44..47) {
CS> my $rlp = $data[$i];
CS> $sum{$cell}{$sect}{$carr}{$dist} += $rlp if $rlp;
you already have the rlp values. why do you get them again? and if they
are in the array as i showed, it is even easier to get them.
for my $rlp ( [at] rpl ) {
$sum{$cell}{$sect}{$carr}{$dist} += $rlp if $rlp;
}
no need for $i (which i hate to see unless absolutely necessary).
CS> }
CS> }
CS> }
CS> my [at] data;
CS> for my $cell ( sort keys %sum ) {
CS> for my $sect ( sort keys %{$sum{$cell}} ) {
CS> for my $carr ( sort keys %{$sum{$cell}{$sect}} ) {
CS> for my $dist ( sort keys %{$sum{$cell}{$sect}{$carr}} ) {
that is highly ineffcient, indexing deep into the tree over and over at
each level. get the reference to the current level and then index into
that. it will be cleaner, faster and better. (untested)
for my $cell ( sort keys %sum ) {
my $top_sect = $sum{$cell} ;
for my $sect ( sort keys %{$top_sect} ) {
my $top_carr = $top_sect->{$sect} ;
for my $carr ( sort keys %{$top_carr} ) {
etc. etc.
the names may not be the best as i don't understand the data here. the
concept is fairly clear - get a reference to the current level and use
that instead of deep indexing at each level. there is plenty of docs on
this: perldsc, perllol, perlreftut.
CS> for my $record ( sort {
CS> $a->[1] <=> $b->[1] ||
CS> $a->[2] <=> $b->[2] ||
CS> $a->[3] <=> $b->[3] ||
CS> $a->[4] <=> $b->[4] } [at] data ) {
might as well align the 4th row too. looping over the actual sort
expression is a clunky looking style. sorting to an array and then
looping is much better.
and here you can indent less to make it easier to read:
my [at] sorted = sort {
$a->[1] <=> $b->[1] ||
$a->[2] <=> $b->[2] ||
$a->[3] <=> $b->[3] ||
$a->[4] <=> $b->[4] } [at] data ;
foreach my $record ( [at] sorted ) {
etc.
uri
--
Uri Guttman ------ uri [at] stemsystems.com -------- http://www.sysarch.com --
----- Perl Code Review , Architecture, Development, Training, Support ------
--------- Gourmet Hot Cocoa Mix ---- http://bestfriendscocoa.com ---------
--
To unsubscribe, e-mail: beginners-unsubscribe [at] perl.org
For additional commands, e-mail: beginners-help [at] perl.org
http://learn.perl.org/