| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > substr странное поведение lvalue |
| Автор: MaXL 4.8.2010, 18:29 | ||||||
| Всем привет. Есть http://perldoc.perl.org/functions/substr.html:
не понятно, почему в последней строке результат будет такой "5pq9" ? вот такой код, например
выводит 67. А в первом варианте, после присвоения переменной $x нового значения, переменная $_ уже становится равной 678. На странице по приведённой мной ссылке написано:
так вот неясно, как оно такое запоминает |
| Автор: MaXL 21.8.2010, 12:35 |
| Up. Вопрос до сих пор ещё актуален. |
| Автор: DurRandir 21.8.2010, 16:53 |
| 1. Оно напечатает 5pq89, что более логично 2. use Devel::Peek; и расставляете Dump $_; по коду в тех местах, где интересно. Но надо хотя бы немного понимать, как перл внутри себя хранит переменные. |
| Автор: DurRandir 22.8.2010, 01:00 | ||
| 1. Я даже запускал. Prior to Perl version 5.9.1, the result of using an lvalue multiple times was unspecified. - у меня 5.8.8. 2. Ну, например, вот это:
Помечено то, что интересно для этого случая. |
| Автор: MaXL 22.8.2010, 07:41 |
| 1. Ну отлично, раз уж вы всё таки прошли по ссылке и прочитала что там написано, то можно было легко сделать вывод, что у меня не "Prior to Perl version 5.9.1, the result of using an lvalue multiple times was unspecified" и как работает substr именно в версии 5.9.1+ 2. я ничего не понял из приведённого листинга. |
| Автор: DurRandir 22.8.2010, 13:16 |
| 1. Ну так запустите у себя с отладочной печатью, и увидете похожий (но другой) вывод. Но вы даже не попробовали. 2. Это и есть "надо понимать, как перл внутри себя хранит переменные". |