/[Sack]/trunk/bin/sack.pl
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/bin/sack.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 4 by dpavlin, Sun Sep 20 20:08:11 2009 UTC revision 9 by dpavlin, Mon Sep 21 20:05:41 2009 UTC
# Line 12  use Getopt::Long; Line 12  use Getopt::Long;
12  my $path   = '/data/isi/full.txt';  my $path   = '/data/isi/full.txt';
13  my $limit  = 10000;  my $limit  = 10000;
14  my $offset = 0;  my $offset = 0;
15    my @views;
16    
17    
18  GetOptions(  GetOptions(
19          'path=s'   => \$path,          'path=s'   => \$path,
20          'offset=i' => \$offset,          'offset=i' => \$offset,
21          'limit=i'  => \$limit,          'limit=i'  => \$limit,
22  );          'view=s'   => \@views,
23    ) or die $!;
24    
25  my $t = time;  my $t = time;
26    
# Line 42  report $input->size . ' records loaded'; Line 44  report $input->size . ' records loaded';
44    
45  mkdir 'out' unless -e 'out';  mkdir 'out' unless -e 'out';
46    
47    our $out;
48    
49    our $cache;
50    
51  sub run_views {  sub run_views {
52          my @views = glob 'views/*.pl';          @views = sort glob 'views/*.pl' unless @views;
53          warn "# views ", dump @views;          warn "# views ", dump @views;
54    
55          foreach my $view ( @views ) {          foreach my $view ( @views ) {
# Line 51  sub run_views { Line 57  sub run_views {
57                  my ( $nr, $package ) = ( $1, $2 )                  my ( $nr, $package ) = ( $1, $2 )
58                          if $view =~ m{/(\d+)\.([^/]+(\.pl)?$)};                          if $view =~ m{/(\d+)\.([^/]+(\.pl)?$)};
59    
60                  my $out;                  undef $out;
61    
62                  next if system("perl -c $view") != 0;                  next if system("perl -c $view") != 0;
63    
64                  my $code = read_file $view;                  my $code = read_file $view;
65                  warn $code;                  warn "## CODE\n$code\n## CODE\n";
66    
67                    my $affected = 0;
68                  $t = time;                  $t = time;
69    
70                  foreach my $pos ( 1 .. $input->size ) {                  foreach my $pos ( $offset + 1 .. $offset + $input->size ) {
71                          my $rec = $input->fetch_rec($pos);                                my $rec = $cache->{$pos} ||= $input->fetch_rec( $pos );
72                            if ( ! $rec ) {
73                          eval $code;                                  warn "END at $pos";
74                          die "ERROR [$pos] $@" if $@;                                  last;
75                            }
76    
77                            eval "$code";
78                            if ( $@ ) {
79                                    warn "ERROR [$pos] $@\n";
80                            } else {
81                                    $affected++;
82                            }
83                  };                  };
84    
85                  report $view;                  report "$affected affected records $view";
86    
87                  if ( defined $out ) {                  if ( defined $out ) {
88                          my $dump = dump $out;                          my $dump = dump $out;
89                          my $len  = length $dump;                          my $len  = length $dump;
90                          my $path = "out/$nr.$package";                          my $path = "out/$nr.$package";
91                          print "# $view $offset/$limit $len bytes $path"                          print "out $view $offset/$limit $len bytes $path"
92                                  , $len < 10000 ?  " \$out = $dump" : ' SAVED ONLY'                                  , ( $len < 10000 ?  " \$out = $dump" : ' SAVED ONLY' )
93                                  , "\n"                                  , "\n"
94                                  ;                                  ;
95    
96                            unlink "$path.last" if -e "$path.last";
97                            rename $path, "$path.last";
98                          write_file $path, $dump;                          write_file $path, $dump;
99                          report "save $path";                          report "save $path";
100                    } else {
101                            warn "W: no \$out defined!";
102                  }                  }
103    
104          }          }

Legend:
Removed from v.4  
changed lines
  Added in v.9

  ViewVC Help
Powered by ViewVC 1.1.26