Kelley, I just completed a project had to figure out how to create SharePoint calendar events from Perl. This was quite a chore, as MS's SOAP interface does not adhere to open standards. As such, I had to create my own custom SOAP requests that contained MS's CAML query language. See the example below, and feel free to contact me, ericjhahn [at] gmail [dot] com, if you have any other problems / questions.
# the GUID can be accessed from the GetListCollection and looks like 082CAB40-1E09-40F1-918C-29563AE9D135 use Data::Dumper; # this is an excellent utility for printing hashes etc. use LWP::UserAgent; use HTTP::Request; use strict; # CREATE EVENT my $site = '<your domain site>/sites/<your sharepoint site>'; my %fields = ( Title => 'My New Event', Location => 'The Warehouse', Description => 'Stock some stuff', EventDate => '2008-06-13 09:45:45', EndDate => '2008-06-13 10:15:45', ); my $eventID = createCalendarEvent($guid, $site, \%fields); sub createCalendarEvent { my $listGUID = shift; my $site = shift; my $fields = shift; my $batch = '<Batch OnError="Continue"> <Method ID="1" Cmd="New">'; while (my ($key, $value) = each (%{$fields})) { $batch .= '<Field Name="' . $key . '">' . $value . '</Field>'; } $batch .= '<Field Name="fAllDayEvent" /> </Method> </Batch>'; my %parameters = ("listName" => $listGUID, # calendar list "updates" => $batch ); my $soap = createEnvelope("UpdateListItems", "http://schemas.microsoft.com/sharepoint/ soap/", \%parameters ); my $ua = new LWP::UserAgent(keep_alive => 1); # the only authentication i could get to work was through the URL (we have basic auth on the sharepoint site) my $request = new HTTP::Request(POST => 'http://<your username>:<your password>@' . $site . '/_vti_bin/Lists.asmx'); $request->content_type("text/xml; charset=utf-8"); $request->content($soap); $request->header(SOAPAction => '"http://schemas.microsoft.com/ sharepoint/soap/UpdateListItems"'); my $response = $ua->request($request); # parsing to return the event ID so that we can store it and access this event later if($response->code == 200) { my $id = $response->as_string; $id = substr($id, index($id, "ows_ID")); $id =~ s/^.*ows_ID="//; $id =~ s/".*$//; chomp($id); return $id; } else { return 0; } } # end createCalendarEvent() -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] http://learn.perl.org/