Help with perl script.


 
Thread Tools Search this Thread
Top Forums Programming Help with perl script.
# 1  
Old 10-14-2011
Help with perl script.

Hi,
I have one folder that contains more number of xml files and extract some specific information form xml files. I used libxml to extract wanted information one xml and i succeded but now how can i extract from folder and each xml file using perl script. i tried like this for one xml file
Code:
use warnings;
 use strict;
 use XML::LibXML::Reader;
  my $file;
 open( $file, 'formal.xml');
 my $reader = XML::LibXML::Reader->new( IO => $file ) or die ("unable to open file");
     my %hash;
 while ($reader->nextElement( 'nuber' ) ) {
 
 my $Number = $reader->readInnerXml();
 
 $reader->nextElement( 'data' ); 
 my $information = $reader->readOuterXml(); 
 
 $nums{$Number}= $information;
 
 print( "  NUMBER:$Number\n" );
     print( " Information:$information\n" );
 
    }
  print my $num=keys%hash;
 close($file);

above code working properly and extracted what i want now i need script that will search all files in the folder and extract same information form all files.
# 2  
Old 10-14-2011
Quote:
Originally Posted by veerubiji
...search all files in the folder and extract same information form all files.
Use the glob operator to loop through the files so you can process them one at a time.

Code:
foreach $file (glob "*") {
  # process the file
}

tyler_durden
# 3  
Old 10-14-2011
Hi,
I readed about globe operator it will search all files like
Code:
glob("*.c")

it will search all .c files in folder.
but your format is different how can i use this operator in my function.
# 4  
Old 10-14-2011
Quote:
Originally Posted by veerubiji
...
Code:
glob("*.c")

it will search all .c files in folder.
...how can i use this operator in my function.
By passing your file format as the parameter to the glob function.
Exactly the way you've done in your posted example.

tyler_durden
# 5  
Old 10-15-2011
Hi,
i tried like this but its not working can you suggest how to use.
Code:
use warnings;
 use strict;
 use XML::LibXML::Reader;
  my $file;

 foreach $file glob("*.xml") {

 my $reader = XML::LibXML::Reader->new( IO => $file ) or die ("unable to open file");
     my %hash;
 while ($reader->nextElement( 'nuber' ) ) {
 
 my $Number = $reader->readInnerXml();
 
 $reader->nextElement( 'data' ); 
 my $information = $reader->readOuterXml(); 
 
 $nums{$Number}= $information;
 
 print( "  NUMBER:$Number\n" );
     print( " Information:$information\n" );
 
    }
}
  print my $num=keys%hash;
 close($file);

but it doesn't give any errors also. may br is there any wrong using for loop.
# 6  
Old 10-15-2011
Quote:
Originally Posted by veerubiji
Hi,
i tried like this but its not working can you suggest how to use.
Code:
use warnings;
 use strict;
 use XML::LibXML::Reader;
  my $file;

 foreach $file glob("*.xml") {

 my $reader = XML::LibXML::Reader->new( IO => $file ) or die ("unable to open file");
     my %hash;
 while ($reader->nextElement( 'nuber' ) ) {
 
 my $Number = $reader->readInnerXml();
 
 $reader->nextElement( 'data' ); 
 my $information = $reader->readOuterXml(); 
 
 $nums{$Number}= $information;
 
 print( "  NUMBER:$Number\n" );
     print( " Information:$information\n" );
 
    }
}
  print my $num=keys%hash;
 close($file);

but it doesn't give any errors also. may br is there any wrong using for loop.
Or maybe you do not have the nuber element in your files.

tyler_durden
# 7  
Old 10-17-2011
Hi,
sorry i am getting errors while running above code my errors are like this
Code:
 
1)" my variable $file masks earlier declaration in same statement at line "
my $reader = XML::LibXML::reader->new(IO=>$file).
2)syntax error at
  "foreach $file glob("*.xml").

.
i have one doubt where should i have to given the folder name and also where shold i end for loop.
finally glob function gives only .xml files in the current directory. but in my problem i need to search one folder that contains many sub folder in that subfolder i have .c and .h and .xml files, i need to find .xml files and extract some information.

Last edited by veerubiji; 10-17-2011 at 11:03 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Programming

PERL: In a perl-scripttTrying to execute another perl-script that SETS SOME VARIABLES !

I have reviewed many examples on-line about running another process (either PERL or shell command or a program), but do not find any usefull for my needs way. (Reviewed and not useful the system(), 'back ticks', exec() and open()) I would like to run another PERL-script from first one, not... (1 Reply)
Discussion started by: alex_5161
1 Replies

2. Shell Programming and Scripting

Excuting perl script from within a perl script with variables.

Not sure what I am doing wrong here, but I can print the list with no issue. Just a blank screen with the 'do'. #!/usr/bin/perl open FILE, "upslist.txt"; while ($line=<FILE>){ if ($line=~/^(.*?),(.*?)$/){ #print "ups:$1 string:$2\n"; do 'check_snmp_mgeups-0.1.pl -H $1 -C $2'; } ... (1 Reply)
Discussion started by: mrlayance
1 Replies

3. Shell Programming and Scripting

Perl : embedding java script with cgi perl script

Hi All, I am aware that html tags can be embedded in cgi script as below.. In the same way is it possible to embed the below javascript in perl cgi script ?? print("<form action="action.htm" method="post" onSubmit="return submitForm(this.Submitbutton)">"); print("<input type = "text"... (1 Reply)
Discussion started by: scriptscript
1 Replies

4. Shell Programming and Scripting

executing perl script from another perl script : NOT WORKING

Hi Folks, I have 2 perl scripts and I need to execute 2nd perl script from the 1st perl script in WINDOWS. In the 1st perl script that I had, I am calling the 2nd script main.pl =========== print "This is my main script\n"; `perl C:\\Users\\sripathg\\Desktop\\scripts\\hi.pl`; ... (3 Replies)
Discussion started by: giridhar276
3 Replies

5. Shell Programming and Scripting

calling a perl script with arguments from a parent perl script

I am trying to run a perl script which needs input arguments from a parent perl script, but doesn't seem to work. Appreciate your help in this regard. From parent.pl $input1=123; $input2=abc; I tried calling it with system("/usr/bin/perl child.pl $input1 $input2"); and `perl... (1 Reply)
Discussion started by: grajp002
1 Replies

6. Shell Programming and Scripting

HELP on Perl array / sorting - trying to convert Korn Shell Script to Perl

Hi all, Not sure if this should be in the programming forum, but I believe it will get more response under the Shell Programming and Scripting FORUM. Am trying to write a customized df script in Perl and need some help with regards to using arrays and file handlers. At the moment am... (3 Replies)
Discussion started by: newbie_01
3 Replies

7. Shell Programming and Scripting

Perl :How to print the o/p of a Perl script on console and redirecting same in log file @ same time.

How can i print the output of a perl script on a unix console and redirect the same in a log file under same directory simultaneously ? Like in Shell script, we use tee, is there anything in Perl or any other option ? (2 Replies)
Discussion started by: butterfly20
2 Replies

8. Shell Programming and Scripting

perl/unix: script in command line works but not in perl

so in unix this command works works and shows me a list of directories find . -name \*.xls -exec dirname {} \; | sort -u | > list.txt but when i try running a perl script to run this command my $query = 'find . -name \*.xls -exec dirname {} \; | sort -u | > list.txt';... (2 Replies)
Discussion started by: kpddong
2 Replies

9. 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

10. Shell Programming and Scripting

Perl: Run perl script in the current process

I have a question regarding running perl in the current process. I shall demonstrate with an example. Look at this. sh-2.05b$ pwd /tmp sh-2.05b$ cat test.sh #! /bin/sh cd /etc sh-2.05b$ ./test.sh sh-2.05b$ pwd /tmp sh-2.05b$ . ./test.sh sh-2.05b$ pwd /etc sh-2.05b$ So... (10 Replies)
Discussion started by: vino
10 Replies
Login or Register to Ask a Question