Извините за плохой титул, но это лучшее, что я мог сделать! : D
У меня есть скрипт, который создает новый проект при каждом вызове указанной функции.
Каждый проект должен храниться в отдельной папке с названием проекта. Но если вы не укажете имя, скрипт просто назовет его «новый проектX», где X - прогрессивное число.
Со временем пользователь может переименовывать папки или удалять некоторые из них, поэтому при каждом запуске скрипта он проверяет наименьшее доступное число (не используемое другой папкой) и создает соответствующую папку.
Теперь мне удалось создать программу, которая, как мне кажется, работает как хотелось бы, но я хотел бы услышать от вас, если все в порядке или что-то не так, что я не могу обнаружить, учитывая мою неопытность в языке.
while ( defined( $file = readdir $projects_dir ) )
{
# check for files whose name start with "new project"
if ( $file =~ m/^new project/i )
{
push( @files, $file );
}
}
# remove letters from filenames, only the number is left
foreach $file ( @files )
{
$file =~ s/[a-z]//ig;
}
@files = sort { $a <=> $b } @files;
# find the smallest number available
my $smallest_number = 0;
foreach $file ( @files )
{
if ( $smallest_number != $file )
{
last;
}
$smallest_number += 1;
}
print "Smallest number is $smallest_number";