#!/usr/bin/perl -w # Do a CPAN autobundle and archive it somewhere # Run from cron as the same user you run CPAN as (probably root) use strict; require 5.8.0; use Sys::Hostname; use CPAN; use CPAN::Config; use File::Copy; #------------Edit These # Where your Bundle gets copied to (use trailing slash) my $bundle_archive_dir = '/tmp/'; # user/group final Archive ownership my $change_ownership = 1; my $userid = 1000; my $groupid = 100; #------------Work my $sysname = hostname; my $local_bundle_home = "$CPAN::Config->{cpan_home}" . '/Bundle/'; my $holder; die &locked if -e "$CPAN::Config->{cpan_home}/.lock"; &bundlearchive; my $recent_bundle = $1 if $holder =~ /(?:Bundle\/)(Snapshot.*)/; my $finaldestination = $bundle_archive_dir . $sysname . '-' . $recent_bundle; copy("$local_bundle_home$recent_bundle","$finaldestination") or die "AutoBundle copy failed: $!"; chown $userid, $groupid, $finaldestination if $change_ownership > 0; #------------Subs sub bundlearchive { open local(*STDOUT), '>', \$holder; autobundle; } sub locked { qx!logger Oops - $0 found a CPAN lockfile - the script is quitting!; } exit $?;