[EMAIL PROTECTED] wrote:
> On Oct 6, 11:26 am, [EMAIL PROTECTED] (Jeff Pang) wrote:
>> [EMAIL PROTECTED] wrote:
>>>
>>> I have large file in following format:
>>> ID | Time | IP | Code
>>>
>>> Now I want to write script that will cluster data by IP addr. and
>>> count total number of IDs for corresponding IP.
>>
>> first I hope this is not a homework question.
>> you may try something like:
>>
>> my $hash = {};
>> while(<DATA>) {
>>     my ($id,$ip) = (split)[0,2];
>>     $hash->{$ip}->{$id} ++;
>>
>> }
>>
>> use Data::Dumper;
>> print Dumper $hash;
> 
> Thanks. No it is not homework. I trying to analyze some data.
> 
> I am trying read file line by line and then use split('|',-------)
> 
> But it is not getting split by delimeter " | " .    Below is example
> code. But out is not as expected bcoz it is not getting split
> properly. I am not sure what I am doing wrong.
> 
> open(INFO, $file);
> @lines = <INFO>;
> 
> @line = split('|', $lines[0]);
> 
> print $line[0];

That's not the best way to do things, but the reason you are not getting the
results you expect is that the first parameter to split() is a regular
expression. The pipe character "|" is special in that context and needs to be
escaped.

Try something like the program below instead. In particular always precede your
programs with

  use strict;
  use warnings;

and be sure to check the success of file opnes.

HTH,

Rob


use strict;
use warnings;

my $file = 'filename';

open my $info, '<', $file or die $!;

while (<$info>) {
  my @line = split /\|/;
  print $line[0], "\n";
}










-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/


Reply via email to