Perl : converting file to different scalar elements


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Perl : converting file to different scalar elements
# 1  
Old 12-11-2015
Perl : converting file to different scalar elements

I have a text file containing 2 exec statements as below and trying to store the below 2 execs into 2 different scalar variables in perl.

Code:
/* ICD Dist, Total */  /* need to export to Excel, sheet=ICD_Dist__Total */
exec(
'select sum(count(*)) 
		cast(count(*)*100.0/sum(count(*)) over() as decimal(18,2)) as percent_total
from DETAIL_' + @dataset_id + ' 
 
)


/* ICD Dist, by Month */  /* need to export to Excel */
exec(
'select  serv_yrmo_tot_claims, 
		cast(count(*)*100.0/sum(count(*)) over(partition by left(convert(varchar,SERVICE_DT,112),6)) as decimal(18,2)) as percent_per_mth
from DETAIL_' + @dataset_id + ' 
 
)


final output should be like

Code:
$query1 = 'exec(
'select sum(count(*)) 
		cast(count(*)*100.0/sum(count(*)) over() as decimal(18,2)) as percent_total
from DETAIL_' + @dataset_id + ' 
 
)'
$query2 = 'exec(
'select  serv_yrmo_tot_claims, 
		cast(count(*)*100.0/sum(count(*)) over(partition by left(convert(varchar,SERVICE_DT,112),6)) as decimal(18,2)) as percent_per_mth
from DETAIL_' + @dataset_id + ' 
 
)'


tried with few possible regex but couldn't able to make it.
Could anyone please help out in solving this.

Last edited by scriptscript; 12-11-2015 at 07:57 AM..
# 2  
Old 12-11-2015
Hi..

How about dynamic variable assignment.

Code:
perl -lne 'if(/exec/){$q="";$c=1;$qc++;}if($c){$q = join(" ", $q, $_);if(/\)$/){$f='query'.$qc;$c=0;$$f=$q;}}END{for($i=1;$i<=$qc;$i++){$f='query'.$i;print $f . "=" . $$f;}}' file_name

-Ranga
This User Gave Thanks to rangarasan For This Post:
# 3  
Old 12-11-2015
thanks rangarasan .

But could you please make this as a perl program instead of one liner.

Once again thanks again for your great help.
# 4  
Old 12-12-2015
by sed
Code:
sed -i  -e "s/exec/\$query1=\'exec/gi" -e "s/^)/)\'/gi" -e "s/^\/\*.*//gi" file

This User Gave Thanks to looney For This Post:
# 5  
Old 12-12-2015
Thank you looney.

If possible could you please help me with the perl code instead of sed.

Thanks much.
# 6  
Old 12-12-2015
Hi scriptscript,
You said you had code that was close to working, but you needed help with the REs. Since the code Ranga and looney suggested doesn't meet your needs, please show us what you have tried and maybe we can then help you tweak your code get what you want.
# 7  
Old 12-13-2015
Thank you Don for your extended support.

Below is what where I got stuck.

Code:
my $count = 0;
open (IN, "filetext.txt");
@array = () ;
while (<IN>) 
{
    if (/exec/) 
    {
	$count = 1;
    }
    elsif (/^\)/) 
    {
	$count = 0;
    }
    elsif ($count) 
    {
	push(@array,$_);

    }

}
close IN;

print "@array";

foreach $line ( @array )
{
        ## not sure what to do next
}


Now @array contains both the query. Now I want to make those queries into two scalars.

Thanks,
John
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl : to get the no. of elements from DataDumper

Hello Folks, I have a DataDumper variable and the output of the dataDumper is printed in the below manner. print Dumper \%mnemonics; VAR1 = { 'SYS-7-CLI_SCHEDULER_LOG_STORED' => , 'CRYPTO-6-IKMP_MODE_FAILURE' => , 'AAAA-4-SERVUNDEF' => , ... (1 Reply)
Discussion started by: scriptscript
1 Replies

2. Shell Programming and Scripting

Array elements comparison using perl

Experts, I am looking to compare elements of 2 array using perl. Below is not the actual code but logic wise something like this. my $version = "MYSQlcl-5.2.4-264.x86_64"; <-- split this word into array as (5 2 4 264) ( which is to extract only the version number from the package name) my... (1 Reply)
Discussion started by: solaix14
1 Replies

3. Shell Programming and Scripting

Help required converting XSD to XML file in PERL

Hi, Please find below the xsd. <?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="fruitorder"> <xs:complexType> <xs:sequence> <xs:element name="orderperson"... (2 Replies)
Discussion started by: vanitham
2 Replies

4. Shell Programming and Scripting

Perl Array Elements Replacement

Hello, I have the following perl array: @longname = (Fasthernet0/0 Fasthernet0/1 Serial0/1/0 Serial0/2/1 Tunnel55 Tunnel77) with the followinh array: @shortname = (Fa0/0 Fa0/1 Se0/1/0 Se0/2/1 Tu55 Tu77) in other words, I need to remove the following from each element in the array... (4 Replies)
Discussion started by: ahmed_zaher
4 Replies

5. Shell Programming and Scripting

perl DBI: populate a scalar from a select statement

hi every resource i see regarding DBI refers to retrieving data from a database into and array or a hash, but i havent seen anything on how to pull out a single value to a scalar in my database i have a field called "forcewrite" with a value of "6". I am trying to connect to the database,... (2 Replies)
Discussion started by: hcclnoodles
2 Replies

6. Shell Programming and Scripting

Perl:Use of array elements in pattern matching

I need to use array elements while pattern matching. @myarr = (ELEM1, ELEM2, ELEM3); following is the statement which I am using in my code. Basically I want to replace the ELEM1/2/3 with other thing which is mentioned as REPL here. if (condition) { s/(ELEM1|ELEM2|ELEM3): REPL: /; } I... (3 Replies)
Discussion started by: deo_kaustubh
3 Replies

7. Shell Programming and Scripting

[Perl] Accessing array elements within a sed command in Perl script

I am trying to use a script to replace the header of each file, whose filename are stored within the array $test, using the sed command within a Perl script as follows: $count = 0; while ( $count < $#test ) { `sed -e 's/BIOGRF 321/BIOGRF 332/g' ${test} > 0`; `cat 0 >... (2 Replies)
Discussion started by: userix
2 Replies

8. Shell Programming and Scripting

Perl - New line in array elements

Hello, I have a comma delimited input feed file. The first field has directory location and the second field has file name. Ex of input feed: /export/appl/a,abc*.dat /export/appl/b,xyz*.dat /export/appl/c,pmn*.dat Under each directory, there would be many files like... . . .... (4 Replies)
Discussion started by: bperl
4 Replies

9. Shell Programming and Scripting

scalar variable assignment in perl + { operator

When reading over some perl code in a software document, I came across an assignment statement like this $PATH = ${PROJECT}/......./.... In this particular form of scalar variable assignment, what does the curly braces operators do ? Also, what is the benefit in doing scalar assignment this... (3 Replies)
Discussion started by: JamesGoh
3 Replies

10. Shell Programming and Scripting

perl scalar variable in backquoted string

hi I've been searching all over the internet to simply do the following: $tempfile = "/usr/school/tempfile.dat"; $myvar = param('add'); ###add is the variable assigned to a popup menu `ls -l $myvar * >> $tempfile` ###I also tried `ls -l ${myvar}* >>$tempfile` open(ADDLIST,... (6 Replies)
Discussion started by: mehdi9
6 Replies
Login or Register to Ask a Question