Provided by: liblfc-perl_1.13.0-1_amd64 bug

NAME

       lfc - Perl interface to the LFC

SYNOPSIS

       use lfc;
       printf "CNS_LIST_BEGIN is %d\n", $lfc::CNS_LIST_BEGIN;

DESCRIPTION

       The  lfc module permits you to access the LFC client interface from perl programs. The lfc
       module is a swig wrapping of the standard C interface.  For detailed descriptions of  each
       function see the individual man page of each function.

       There  follows  a  series of examples of how to use selected functions and how to retrieve
       the information returned by them: Examples are finding the  GUID  of  an  existing  entry,
       listing  the  replicas  of  a given GUID and setting and retrieving the comment associated
       with an entry.

EXAMPLE

       #!/usr/bin/perl -w
       use strict;
       use lfc;

       # stat an existing entry in the LFC and print the GUID
       my ($name,$stat,$guid,$res);
       $name = "/grid/dteam/my.test";

       $stat = lfcc::new_lfc_filestatg();
       $res = lfc::lfc_statg($name,undef,$stat);

       if ($res == 0) {
         $guid = lfcc::lfc_filestatg_guid_get($stat);
         print "The GUID for $name is $guid\n";
       } else {
         my $err_num = $lfc::serrno;
         my $err_string = lfc::sstrerror($err_num);
         print "There was an error while looking for $name: Error $err_num ($err_string)\n";
         exit(1);
       }
       lfcc::delete_lfc_filestatg($stat);

EXAMPLE

       #!/usr/bin/perl -w
       use strict;
       use lfc;

       # list the replicas of a given entry, starting from the GUID
       my ($guid,$listp,$flag,$num_replicas);
       $guid = "6a3164e0-a4d7-4abe-9f76-e3b8882735d1";

       $listp = lfcc::new_lfc_list();
       $flag =  $lfc::CNS_LIST_BEGIN;

       print "Listing replicas for GUID $guid:\n";

       $num_replicas=0;

       while(1) {
         my $res = lfc::lfc_listreplica(undef,$guid,$flag,$listp);
         $flag = $lfc::CNS_LIST_CONTINUE;

         if (!defined $res) {
           last;
         } else {
           my $rep_name = lfcc::lfc_filereplica_sfn_get($res);
           print "Replica: $rep_name\n";
           $num_replicas++;
         }
       }
       lfc::lfc_listreplica(undef,$guid,$lfc::CNS_LIST_END,$listp);
       lfcc::delete_lfc_list($listp);

       print "Found $num_replicas replica(s)\n";

EXAMPLE

       #!/usr/bin/perl -w
       use strict;
       use lfc;

       # setting and retrieving a comment on a file
       my ($file,$res,$bufspec,$buffer,$comment);
       $file = "/grid/dteam/my.test";

       $comment = "MyComment";
       $res = lfc::lfc_setcomment($file,$comment);

       if ($res != 0) {
         my $err_num = $lfc::serrno;
         my $err_string = lfc::sstrerror($err_num);
         print "Problem while setting comment for $file: Error $err_num ($err_string)\n";
         exit(1);
       }

       $bufspec =  "x".($lfc::CA_MAXCOMMENTLEN+1);
       $buffer = pack($bufspec);
       $res = lfc::lfc_getcomment($file,$buffer);

       if ($res != 0) {
         my $err_num = $lfc::serrno;
         my $err_string = lfc::sstrerror($err_num);
         print "Problem while reading the comment for $file: Error $err_num ($err_string)\n";
         exit(1);
       }

       $comment = unpack("Z*", $buffer);
       print "Read back comment $comment\n";

NOTES

       The  current  interface  to   the   lfc_getcomment(3),   lfc_getcwd(3),   lfc_readlink(3),
       lfc_seterrbuf(3)  requires the passing of a suitably allocated buffer (in a similar way to
       the C functions). However this is rather non standard in PERL. A  future  version  of  lfc
       perl  interface  may  do  away  with  the  need to setup the buffer before the call and to
       explicitly unpack the result afterwards.

SEE ALSO

       LFC C interface man pages