#!/usr/local/bin/perl -w use strict; sub OAIv_findPlatform { my $platform = shift @_; chomp $platform; # Default Platform Type is 0 (Unknown) my $platformType = "0"; # If multiple platforms match, it's cross platform my $isCrossPlatform; $isCrossPlatform=0; if ( $platform =~ /^(.*)HTML Browser(.*)$/ ) { $platformType="5"; $isCrossPlatform=$isCrossPlatform+1; } if ( $platform =~ /^(.*)Java Virtual Machine(.*)$/ ) { $platformType="64"; $isCrossPlatform=$isCrossPlatform+1; } if ( $platform =~ /^(.*)PC(.*)$/ ) { $platformType="3"; $isCrossPlatform=$isCrossPlatform+1; } if ( $platform =~ /^(.*)Sun Sparc(.*)$/ ) { $platformType="36"; $isCrossPlatform=$isCrossPlatform+1; } if ( $platform =~ /^(.*)SGI(.*)$/ ) { $platformType="81"; $isCrossPlatform=$isCrossPlatform+1; } if ( $platform =~ /^(.*)HP(.*)$/ ) { $platformType="82"; $isCrossPlatform=$isCrossPlatform+1; } if ( $isCrossPlatform >= 2 ) { $platformType="1"; } return $platformType; } sub OAIv_findLContext () { my @gradelevels; foreach my $grade (@_) { if ( $grade eq "Primary elementary" ) { push(@gradelevels,"1","2","3"); } elsif ( $grade eq "Intermediate elementary" ) { push(@gradelevels,"4","5","6"); } elsif ( $grade eq "Primary Education" ) { push(@gradelevels,"1","2","3","4","5","6"); } elsif ($grade eq "Middle school" ){ push(@gradelevels,"7","8"); } elsif ( ($grade eq "Secondary Education") or ($grade eq "High school") ) { push(@gradelevels,"9","10","11","12"); } elsif ($grade eq "Undergraduate lower division") { push(@gradelevels,"13","14"); } elsif ($grade eq "Undergraduate upper division") { push(@gradelevels,"15","16"); } elsif ( $grade eq "Higher Education" ) { push(@gradelevels,"13","14","15","16"); } elsif ( $grade eq "Graduate or professional" ) { push(@gradelevels,"17"); } else { } } if (@gradelevels) { return join(";", @gradelevels); } else { return(); } } sub OAIv_parseVcard_matti () { # Sample begin:vcard FN: Richard N: Wellman ADR: ;Salt Lake City, UT 84124;;;;;USA ORG: Westminster College EMAIL; INTERNET: rwellman@westminstercollege.edu end:vcard my $firstname; my $lastname; my $email; my $org; my @pdi; ($firstname, $lastname, $org, $email) = (shift(@_) =~ /^begin:vcard\sFN:\s(.*)\sN:\s(.*)\sADR:.*ORG:\s(.*)\sEMAIL;\sINTERNET:\s(.*)\send:vcard$/); push(@pdi,$lastname, $firstname, $email, $org); return @pdi; } sub OAIv_parseVcard () { # Sample #BEGIN:vCard #FN:Steve Hayes #N:Hayes;Steve #EMAIL;INTERNET:shayes@vt.edu #ORG:Virginia Tech;Computer Science #END:vCard my $firstname; my $lastname; my $email; my $org; my @pdi; my @vcard = split /\n/, shift(@_); foreach my $element (@vcard) { chomp $element; my ($property,$value) = split /:/, $element; next if ! defined $property; if ( $property eq "FN" ) { ($firstname,$lastname) = split / /, $value; } elsif ( $property eq "EMAIL;INTERNET" ) { $email = $value; } elsif ( $property eq "ORG" ) { $org = $value; } } push(@pdi,$lastname, $firstname, $email, $org); return @pdi; } return 1;