Я новичок. Сожалею. Я пытаюсь удалить запятые. Perl cgi.pm
Мне нужно знать, как написать этот параметр ('item_price' => ~ s/\, // g);
Я могу сделать это $ item_price = ~ s/\, // g; но скорее устранит преобразование в переменную.
Что еще лучше, если я могу включить удаление $. Это можно сделать? СпасибоPerl простой поиск и замена
ответ
Нет. Вы можете применить замену RegEx только к l-значению (выражению, которое вы можете присвоить значению TO), поскольку ему необходимо записать измененную строку.
От perldoc perlop
для s///
оператора:
Если не используется параметр/г, то строка должно быть указано скалярную переменную, элемент массива, хэш-элемент, или задание к одному из тех,; то есть какой-то скалярный lvalue. (В примечании: модификатор
/r
кажется новой функцией в Perl 5.14).
Подпрограмма/вызов метода НЕ является значением l.
Есть 3 обходные возможно:
Присвоить результаты вызова подпрограммы на переменную, и запустить регулярные выражения на переменную.
Это может быть немного более длинный код, но он чист, читабельен и не подвержен ошибкам. Лучшее решение.
(my $param_cleaned = param('item_price')) =~ s/,//;
Обновление до Perl 5.14 и использовать
/r
модификатор RegEx.[BAD IDEA !!!] Если значение параметра хранится внутри CGI.pm, перейдите в внутреннее хранилище объекта CGI и примените регулярное выражение к значению, хранящемуся в объекте. Вы почти никогда не должны этого делать!
Вы могли бы, но я не уверен, что это будет более эффективно. Нечто подобное должно работать:
join("", split(/,/, param('item_price')));
Это аккуратный взлом, но IMHO не подвержен простой читаемости. – DVK
Вы можете сделать что-то подобное в Perl 5.14, с return flag:
my $result = param('item_price') =~ s/,//gr;
Вопрос неясна (из-за предоставление недействительных Perl как описание того, что вы хотеть).
Похоже, вы хотите получить значение и преобразовать его внутри выражения.
do {
my $item_price = param('item_price');
$item_price =~ s/,//g;
$item_price
}
или
use List::MoreUtils qw(apply);
apply { s/,//g } param('item_price')
или
# Requires 5.14
param('item_price') =~ s/,//gr
Где можно использовать те? В любом месте можно использовать выражение.
# Print out the transformed value
print(param('item_price') =~ s/,//gr);
# Change the param itself
param('item_price', param('item_price') =~ s/,//gr);
etc
- 1. Perl: Поиск и замена
- 2. Простой поиск/замена в Perl без ошибок?
- 3. Perl поиск и замена подстроки
- 4. perl поиск и замена подстроки
- 5. Поиск и замена в Perl
- 6. Простой поиск и замена sed
- 7. Простой поиск и замена regexp
- 8. Perl скрипт поиск/замена и преобразование результатов
- 9. Быстрый многократный поиск и замена в Perl
- 10. perl поиск и замена случайного текста
- 11. Поиск и замена в файле на Perl?
- 12. Perl: поиск и замена в цикле foreach
- 13. Многострочный шаблон Поиск и замена в perl
- 14. Использование ~ в Perl поиск и замена
- 15. Perl поиск и замена НЕ работает
- 16. Поиск и замена динамически PERL регулярных выражений
- 17. простой поиск и замена регулярных выражений
- 18. простой поиск и замена с помощью jQuery
- 19. Простой поиск и замена скрипта PHP/MySQL
- 20. Простой поиск и замена в текстовом поле
- 21. Простой поиск и замена использования регулярного выражения
- 22. поиск и замена строки
- 23. vim: Поиск и замена
- 24. Поиск и замена Python
- 25. Поиск vs Поиск и замена
- 26. Поиск и замена командным файлом
- 27. Поиск и замена определенного кода в XML с помощью Perl
- 28. XML-поиск и замена значений с использованием perl
- 29. Perl Поиск и замена в одном регулярном выражении
- 30. Поиск и замена String из html-файла в perl
Как примечание: Я в курсе [L-значение подпрограмм] (http://perldoc.perl.org/perlsub.html#Lvalue-subroutines). Они новы, экспериментальны и не имеют отношения к этому вопросу. Таким образом, комментарий, а не часть ответа. – DVK
Спасибо. Это очень полезно. –
@ta - добро пожаловать. По способу работы StackOverflow вы можете легко выразить свою признательность, приняв самый полезный ответ, щелкнув по метке «проверка» рядом с этим ответом (и вы получите 2 повторных пункта для этого). – DVK