The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/oratest/perl/bin/perl

use ARS;

($S, $U, $P, $schema, $entry, $field) = (shift, shift, shift,
					 shift, shift, shift);

$c = ars_Login($S, $U, $P);
%f = ars_GetFieldTable($c, $schema);
foreach (keys %f) {
  $r{$f{$_}} = $_;
}
%v = ars_GetEntry($c, $schema, $entry);
foreach (keys %v) {
  print "$r{$_} = $v{$_}\n";
  dh($v{$_}) if $r{$_} =~ /Attachment/;
  ra($_) if $r{$_} =~ /Attachment/;
}

ars_Logoff($c);

exit 0;

#sub AR_LOC_FILENAME { 1;}
#sub AR_LOC_BUFFER { 2;}

sub ra {
  my $fid = shift;

  print "\t[Retrieving attachment.]\n";

  
  # file: $a = 0 || 1
  # buff: $a = undef || attachment


  unlink('/tmp/attachtest', '/tmp/attachtest2');

  ars_GetEntryBLOB($c, $schema, $entry,
		   $fid, 
		   ARS::AR_LOC_FILENAME,
		   "/tmp/attachtest") || 
		     die ("GetEntryBLOB: $ars_errstr");

  my $a = ars_GetEntryBLOB($c, $schema, $entry,
			   $fid, 
			   ARS::AR_LOC_BUFFER);

  die "GetEntryBLOB: $ars_errstr" if(!defined($a));
  print "\tattachment size = ".length($a)."\n";
  open(FD, ">/tmp/attachtest2") || die "open: $!";
  print FD $a;
  close(FD);
}

sub dh {
  my $h = shift;
  foreach (keys %$h) {
    print "\t$_ = $h->{$_}\n";
  }
}