GnuCash  2.6.99
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
grab-types.pl
Go to the documentation of this file.
1 #!/usr/bin/perl -w
2 ##@file
3 #@cond Perl
4 use strict;
5 
6 my $tag = shift @ARGV;
7 my $filename = shift @ARGV;
8 my $file_to_write_to_pattern = shift @ARGV;
9 my $files_written = "";
10 
11 open(XMLFILE, $filename);
12 
13 sub write_file
14 {
15  my $data = shift;
16  my $num = shift;
17 
18  my $towriteto = $file_to_write_to_pattern;
19  $towriteto =~ s/XXX/$num/;
20 
21  open(TOWRITE, ">$towriteto");
22 
23  print TOWRITE $data;
24 
25  close TOWRITE;
26 
27  $files_written .= " $towriteto";
28 }
29 
30 my $xml_header = "<?xml version=\"1.0\"?>\n<gnc-v2>\n";
31 my $to_write = $xml_header;
32 my $grabbing = 0;
33 my $grab_num = 0;
34 
35 while (<XMLFILE>) {
36  if ($grabbing) {
37  $to_write .= $_;
38  if ($_ =~ m/\<\/$tag\>/) {
39  $to_write .= "</gnc-v2>\n";
40  write_file($to_write, $grab_num);
41  $to_write = $xml_header;
42  $grab_num++;
43  $grabbing = 0;
44  }
45  }
46  elsif ($_ =~ m/\<$tag .*\>/) {
47  $grabbing = 1;
48  $to_write .= $_;
49  }
50 }
51 
52 print $files_written
53 ##@endcond Perl