# This example demonstrates locking an element, but # locking other CCVOBObjects works in a similar way. # This example also demonstrates using variant arrays from Perl. use Win32::OLE; use Win32::OLE::Variant; # Connect to the top-level ClearCase application object $cc = Win32::OLE->new('ClearCase.Application') or die "Could not create Application object\n"; # Get a CCElement object from the top-level application object my $elem = $cc->Element("m:\\carol_main\\caroltest\\testelem.c"); # Create an array of users ("jo" and "caroly") to exempt from the lock my $exemptusers = Variant(VT_ARRAY|VT_BSTR, 2); $exemptusers->Put(["jo", "caroly"]); # Create a lock on the element, but do not make the element obsolete. $elem->CreateLock("locking from example script", false, $exemptusers); # Print some information about the lock # Note: the example does no error checking, but you should check for errors! my $elemlock = $elem->Lock; my $record = $elemlock->CreationRecord; # Get the list of exempt users my $users = $elemlock->ExemptUsersStringArray; my $strusers = ""; $first = 1; for (@$users) { if ($first == 0) { $strusers = $strusers . ", " . $_; } else { $strusers = $_; $first = 0; } } # Print out other lock information print("Lock created by ", $record->UserLoginName, " at ", $record->Date, " and has ", $elemlock->NumberOfExemptUsers, " exempt users: ", $strusers); # Now change the list of exempt users, using a declared array my @names = ("bill", "eric", "caroly"); my $arr = Variant(VT_ARRAY|VT_BSTR, 3); $arr->Put([$names]); $elemlock->SetExemptUsersStringArray($arr); # Unlock it $elemlock->Remove;