Удаляем пустые папки на Perl6 рекусивно

28.10.2016 - 2758 просмотров ;)

Написал такой скрипт для удаления пустых папок. А написал его на Perl6.
Вот исходничек:

# Удаляет все пустые папки

my $file;
my $empty;

RemoveEmptySubFolders ($*CWD.path);

sub RemoveEmptySubFolders ( $path ) {
	$empty = True;
	for dir($path) -> $file {
		if ( $file.IO.d ) {
			unless (RemoveEmptySubFolders($file)) {
				$empty = False;
			}
		}
		else{
			$empty = False;
		}
	}
	if ($empty) {
		say $path if rmdir ($path);
	}
	return $empty;
}

Что меня вообще удивляет в Perl6:

  1. Если в PHP это glob, то в Perl6 это dir
  2. IO — класс в котором куча методов по работе с вводом выводом. Этакий Ruby получился объектный
  3. Так же как в старом Perl5 надо блоки ставить даже для одной операции, могли бы и отказаться от такой практики
  4. Обязательное объявление переменных
  5. Конкатенация через символ ~, эт пожалуй самое странное, вообще не понял причину такого подхода. Это немного сбивает

Вообщем-то не так и сильно исходник отличался бы от того же PHP или тем более Perl5, писать можно. Другое дело что все это можно было бы наверное написать более компактно, зная фичи Perl6, а фич там ой как ДОХРЕНА, но я пока их не использовал ибо надо было написать просто рабочий вариант.

Статьи из раздела, Видеочат рулетка