version 1.3, 2003/09/04 14:32:46
|
version 1.8, 2007/07/25 17:43:34
|
Line 32
|
Line 32
|
use strict; |
use strict; |
use Getopt::Long; |
use Getopt::Long; |
use GDBM_File; |
use GDBM_File; |
|
use Data::Dumper; |
|
use Storable qw(thaw); |
|
use lib '/home/httpd/lib/perl/'; |
|
use LONCAPA; |
|
use LONCAPA::Configuration; |
|
use Cwd; |
|
|
# |
# |
# Options |
# Options |
Line 62 END
|
Line 68 END
|
exit; |
exit; |
} |
} |
|
|
|
my %perlvar=%{&LONCAPA::Configuration::read_conf('loncapa.conf')}; |
|
|
# |
# |
# Loop through ARGV getting files. |
# Loop through ARGV getting files. |
while (my $fname = shift) { |
while (my $fname = shift) { |
my %db; |
$fname = &Cwd::abs_path($fname); |
if (! tie(%db,'GDBM_File',$fname,&GDBM_READER,0640)) { |
my $dbref; |
|
if ($fname =~ m/^\Q$perlvar{'lonUsersDir'}\E/) { |
|
$dbref=&LONCAPA::locking_hash_tie($fname,&GDBM_READER()); |
|
} else { |
|
if (tie(my %db,'GDBM_File',$fname,&GDBM_READER(),0640)) { |
|
$dbref = \%db; |
|
} |
|
} |
|
|
|
if (!$dbref) { |
warn "Unable to tie to $fname"; |
warn "Unable to tie to $fname"; |
next; |
next; |
} |
} |
while (my ($key,$value) = each(%db)) { |
while (my ($key,$value) = each(%$dbref)) { |
|
if ($value =~ s/^__FROZEN__//) { |
|
$value = thaw(&unescape($value)); |
|
} |
if ($unesc) { |
if ($unesc) { |
$key = &unescape($key); |
$key = &unescape($key); |
$value = &unescape($value); |
$value = &unescape($value) if (! ref($value)); |
} |
} |
if ($localize_times) { |
if ($localize_times && ! ref($value)) { |
if ($value =~ /^\s*([0-9]{10,10})\s*$/) { |
$value =~ s/([0-9]{10,10})/localtime($1)/ge; |
$value = $value.' [ '.localtime($1).' ]'; |
|
} |
|
} |
} |
print "$key = $value\n"; |
print "$key = ".(ref($value)?Dumper($value):$value)."\n"; |
|
} |
|
if ($fname =~ m/^\Q$perlvar{'lonUsersDir'}\E/) { |
|
&LONCAPA::locking_hash_untie($dbref); |
|
} else { |
|
untie($dbref); |
} |
} |
untie %db; |
|
} |
} |
exit; |
exit; |
|
|
###################################### |
|
sub unescape { |
|
my $str=shift; |
|
$str =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; |
|
return $str; |
|
} |
|