#define _kisiOS7 ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0)
if (_kisiOS7) {
NSLog(@"iOS7 or greater")
}
else {
NSLog(@"Less than iOS7");
}
По умолчанию замены берут строку в качестве части для замены. Для выполнения кода в процессе замены, необходимо использовать эти e
флаг.
$numOfChar = 10;
s/^(.*)/' ' x $numOfChar . $1/e;
Это добавит $numOfChar
пространство к запуску Вашего текста. Сделать это для каждой строки в тексте любое использование -p
флаг (для быстрой, короткой обработки):
cat foo.txt | perl -p -e "$n = 10; s/^(.*)/' ' x $n . $1/e/" > bar.txt
или если это - часть большего использования сценария -g
и -m
флаги (-g
для глобальной, т.е. повторенной замены и -m
для создания ^
соответствие в начале каждой строки):
$n = 10;
$text =~ s/^(.*)/' ' x $n . $1/mge;
Вы правы. Perl x
оператор повторяет строку неоднократно.
print "test\n" x 10; # prints 10 lines of "test"
РЕДАКТИРОВАНИЕ: Чтобы сделать эту внутреннюю часть регулярное выражение, вероятно, было бы лучше (иначе самая обслуживающая товарищеская встреча) просто присвоить значение другой переменной.
my $spaces = " " x 10;
s/^\s*(.*)/$spaces$1/;
существуют способы сделать это без дополнительной переменной, но просто мои 0,02$ будет легче поддержать, если Вы сделаете это этот путь.
РЕДАКТИРОВАНИЕ: Я зафиксировал свой regex. Извините я не читал, это исправляется в первый раз.
Ваше регулярное выражение может быть записано как:
$numOfChar = 10;
s/^(.*)/(' ' x $numOfChar).$1/e;
но - можно сделать это с:
s/^/' ' x $numOfChar/e;
Или не используя regexps вообще:
$_ = ( ' ' x $numOfChar ) . $_;