Simpler Navigation for Servers and Operating Systems
Completed: a much simpler Servers and Operating Systems section of the Community. We combined many of the older boards, so you won't have to click through so many levels to get at the information you need. Check the consolidated boards here as many sub-forums are now single boards.
cancel
Showing results for 
Search instead for 
Did you mean: 

PERL script needed

SOLVED
Go to solution
kiran1977
Occasional Contributor

PERL script needed

In a Data file with delimiter ‘|’
i need to know the unique store key with number of items for it.

for example .
121882|18281684|100|250416|2
121882|18281684|100|250416|30

$3=store key ; $5=items

Output:
unique store key 100 with 32 items
7 REPLIES
H.Merijn Brand (procura
Honored Contributor

Re: PERL script needed

$_ = "121882|18281684|100|250416|2";
my ($key, $items) = (split /\s*\|\s*/)[2,4];

or inside the loop:

while (<>) {
chomp;
my ($key, $items) = (split /\s*\|\s*/)[2,4];
}

Enjoy, Have FUN! H.Merijn
Enjoy, Have FUN! H.Merijn
kiran1977
Occasional Contributor

Re: PERL script needed

am using this script

open (INP,"testcpn1.txt");
while($x=){
chomp($x);
my($key,$items)=split(/\s*\|\s*/)[2,4];
@count[$key]+=$items;
}
close (INP);
foreach $i (@count)
{
print $i."|".$count[$i];
}

am getting out put as 0|0

please can you look at this and give me the proper way.

Thanks in Advance.

H.Merijn Brand (procura
Honored Contributor
Solution

Re: PERL script needed

my %count;
open INP, "while () {
chomp;
my ($key, $items) = (split /\s*\|\s*/)[2,4];
$count{$key} += $items;
}
close INP;
foreach my $i (sort keys %count) {
print "$i|$count{$i}\n";
}

Enjoy, Have FUN! H.Merijn
Enjoy, Have FUN! H.Merijn
kiran1977
Occasional Contributor

Re: PERL script needed

its is working fine.
Thanks a lot.
please here are some of the other queries
1. i need to find out the count of number of unique stores in it.

2. i have a date field(fourth field ($4)) in my file with format 2005-01-23 00:00:00. from this i want to extract the hourth value.how can i do it with perl.
in awk i have written it succesfully
BEGIN{
FS=OFS="|"
}
{
dat=split($4,aa," ") //
hour=split(aa[2],bb,":")
count[bb[1]]++
}
END{
for(i in count)
{
print "Hour", i,"th number of transactions happened = " count[i];
}
}


please can u write this script in perl.

Thanks in Advance.

i need to convert all of my awk excercise in to perl.
because awk behaves erratically for numbers beyond 4294967296 (2^32)

Please do the need.

Great Thanks




H.Merijn Brand (procura
Honored Contributor

Re: PERL script needed

> its is working fine.

Good.

> Thanks a lot.

Thank can be expressed in assigning points

> please here are some of the other queries
> 1. i need to find out the count of number of unique stores in it.

print scalar keys %count;

> 2. i have a date field(fourth field ($4)) in my file with format 2005-01-23 00:00:00.
> from this i want to extract the hourth value.how can i do it with perl.

my $hour = ($date_fld =~ m/\s+(\d+)/);

> in awk i have written it succesfully

awk is not my specialty. I consider awk a dead language, only useful for very easy tasks

> i need to convert all of my awk excercise in to perl.

# a2p <script.awk > script.pl


Enjoy, Have FUN! H.Merijn
Enjoy, Have FUN! H.Merijn
H.Merijn Brand (procura
Honored Contributor

Re: PERL script needed

Sorry, two parenteses missing:

my ($hour) = ($date_fld =~ m/\s+(\d+)/);

FWIW, you could also consider using Date::Calc

Enjoy, Have FUN! H.Merijn
Enjoy, Have FUN! H.Merijn
kiran1977
Occasional Contributor

Re: PERL script needed

for unique stores script.the number of unique stores in itd isplays as 2. in the data file there is only one store 100.