155714Skris#!/usr/local/bin/perl
255714Skris
355714Skris# mkdir-p.pl
455714Skris
555714Skris# On some systems, the -p option to mkdir (= also create any missing parent
655714Skris# directories) is not available.
755714Skris
855714Skrismy $arg;
955714Skris
1055714Skrisforeach $arg (@ARGV) {
11160814Ssimon  $arg =~ tr|\\|/|;
1255714Skris  &do_mkdir_p($arg);
1355714Skris}
1455714Skris
1555714Skris
1655714Skrissub do_mkdir_p {
1755714Skris  local($dir) = @_;
1855714Skris
1955714Skris  $dir =~ s|/*\Z(?!\n)||s;
2055714Skris
2155714Skris  if (-d $dir) {
2255714Skris    return;
2355714Skris  }
2455714Skris
2555714Skris  if ($dir =~ m|[^/]/|s) {
2655714Skris    local($parent) = $dir;
2755714Skris    $parent =~ s|[^/]*\Z(?!\n)||s;
2855714Skris
2955714Skris    do_mkdir_p($parent);
3055714Skris  }
3155714Skris
3255714Skris  mkdir($dir, 0777) || die "Cannot create directory $dir: $!\n";
3355714Skris  print "created directory `$dir'\n";
3455714Skris}
35