For Programmers: Free Programming Magazines  


Home > Archive > PERL Beginners > March 2004 > Character Count









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author Character Count
Rob Torres

2004-03-26, 11:14 pm

Hello,
I am writing a simple perl script to count the # of characters in a given
field. At the command line I can write >>wc -m somefile.txt, and get the
total character count. But in the script I am splitting a text file and
then doing a count on an element of the array.

code snippet:
**************************
while (<FILE> )
{
chomp;
(@fields) = split(/\t/);
$count = wc -m $fields[12];
print "$count\n";
}
**************************

Here is the error I receive when I check the syntax.
>perl -c count.pl

Unrecognized file test: -m at count.pl line 20.


I've tried many different ways of writing this, but can't seem to get it
working. Any ideas/help?
Thanks,
Rob

________________________________________
_________________________
Check out MSN PC Safety & Security to help ensure your PC is protected and
safe. http://specials.msn.com/msn/security.asp

James Edward Gray II

2004-03-26, 11:14 pm

On Mar 23, 2004, at 3:18 PM, Rob Torres wrote:

> Hello,
> I am writing a simple perl script to count the # of characters in a
> given
> field. At the command line I can write >>wc -m somefile.txt, and get
> the
> total character count. But in the script I am splitting a text file
> and
> then doing a count on an element of the array.
>
> code snippet:
> **************************
> while (<FILE> )
> {
> chomp;
> (@fields) = split(/\t/);
> $count = wc -m $fields[12];


In Perl, we spell that:

$count = length $fields[12];

Hope that helps. ;)

James

P.S. Looks like you might not be using strict and probably not
warnings either. I definitely don't recommend continuing on that
way...

> print "$count\n";
> }
> **************************
>
> Here is the error I receive when I check the syntax.
> Unrecognized file test: -m at count.pl line 20.
>
>
> I've tried many different ways of writing this, but can't seem to get
> it
> working. Any ideas/help?
> Thanks,
> Rob
>
> ________________________________________
_________________________
> Check out MSN PC Safety & Security to help ensure your PC is protected
> and safe. http://specials.msn.com/msn/security.asp
>
>
> --
> To unsubscribe, e-mail: beginners-unsubscribe@perl.org
> For additional commands, e-mail: beginners-help@perl.org
> <http://learn.perl.org/> <http://learn.perl.org/first-response>
>
>
>


Beau E. Cox

2004-03-26, 11:14 pm

On Tuesday 23 March 2004 11:18 am, Rob Torres wrote:
> Hello,
> I am writing a simple perl script to count the # of characters in a given
> field. At the command line I can write >>wc -m somefile.txt, and get the
> total character count. But in the script I am splitting a text file and
> then doing a count on an element of the array.
>
> code snippet:
> **************************
> while (<FILE> )
> {
> chomp;
> (@fields) = split(/\t/);
> $count = wc -m $fields[12];
> print "$count\n";
> }
> **************************
>
> Here is the error I receive when I check the syntax.
>
>
> Unrecognized file test: -m at count.pl line 20.
>
>
> I've tried many different ways of writing this, but can't seem to get it
> working. Any ideas/help?
> Thanks,
> Rob


Rob -

You're mixing Xs and Os. 'wc' is an external program that must be
run under a 'shell' (bash, sh, etc.) - NOT perl. Although you can
execucte external commands within perl ( via 'system' or '`...`', this
script should use perl internal functions like:

**************************

use strict; # get in this habit
use warnings;

while (<FILE> )
{
chomp;
my @fields = split(/\t/);
my $count = 0;
for my $field( @fields ) {
$count += length $field;
}
print "$count\n";
}
**************************

Aloha => Beau;


Sponsored Links







Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive

Copyright 2008 codecomments.com