#!/usr/local/bin/perl # # $Header: /cvsroot/arsperl/ARSperl/example/GetField.pl,v 1.4 1998/09/11 14:46:18 jcmurphy Exp $ # # EXAMPLE # GetField.pl [server] [username] [password] [schema] [fieldname] # # DESCRIPTION # Connect to the server and fetch information about the # named field. Print the information out. # # NOTES # We'll be looking up the field names in the Default Admin View. # # AUTHOR # jeff murphy # # 02/19/97 # # $Log: GetField.pl,v $ # Revision 1.4 1998/09/11 14:46:18 jcmurphy # altered script logic so that it figures out whether it # should decode a hash or array on the fly. # fixed typo that was causing arrays not to be printed. # # Revision 1.3 1997/11/26 20:05:54 jcmurphy # nada # # Revision 1.2 1997/05/07 15:38:19 jcmurphy # fixed incorrect hash usage # # Revision 1.1 1997/02/19 22:41:16 jcmurphy # Initial revision # # # use ARS; # Parse command line parameters ($server, $username, $password, $schema, $fieldname) = @ARGV; if(!defined($password)) { print "usage: $0 [server] [username] [password] [schema] [fieldname]\n"; exit 1; } # Log onto the ars server specified print "Logging in ..\n"; ($ctrl = ars_Login($server, $username, $password)) || die "can't login to the server"; # Fetch all of the fieldnames/ids for the specified schema print "Fetching field table ..\n"; (%fids = ars_GetFieldTable($ctrl, $schema)) || die "GetFieldTable: $ars_errstr"; # See if the specified field exists. if(!defined($fids{$fieldname})) { print "ERROR: I couldn't find a field called \"$fieldname\" in the Default Admin View of schema \"$schema\"\n"; exit 0; } # Get the field info print "Fetching field information ..\n"; ($fieldInfo = ars_GetField($ctrl, $schema, $fids{$fieldname})) || die "GetField: $ars_errstr"; print "Here are some of the field attributes. More are available. fieldId: $fieldInfo->{fieldId} createMode: $fieldInfo->{createMode} dataType: $fieldInfo->{dataType} defaultVal: $fieldInfo->{defaultVal} owner: $fieldInfo->{owner} "; dumpKV($fieldInfo, 0); ars_Logoff($ctrl); exit 0; sub dumpKV { my $hr = shift; my $i = shift; foreach $k (keys %$hr){ print "\t"x$i."key=<$k> val=<$hr->{$k}>\n"; if(ref($hr->{$k}) eq "HASH") { dumpKV($hr->{$k}, $i+1); } elsif(ref($hr->{$k}) eq "ARRAY") { dumpAV($hr->{$k}, $i+1); } } } sub dumpAV { my $ar = shift; my $i = shift; my $a = 0; foreach (@$ar) { print "\t"x$i."index=<$a> val=<$_>\n"; if(ref($_) eq "HASH") { dumpKV($_, $i+1); } elsif(ref($_) eq "ARRAY") { dumpAV($_, $i+1); } $a++; } }