Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод perl to php, помогите разобраться новичку 
:(
    Опции темы
cremnet
  Дата 15.5.2009, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Вобщем столкнулся с проблемой перевода PERL в PHP есть рабочий код на перл я его в PHP перевожу. Проблема что с PERL вообще никогда не сталкивался и смотрю на него как баран на новые ворота. Вроде чтото понятно а всеравно никак не въеду. Вобщем надыбал полезных ссылок самая полезная оказалась http://www.antigreen.org/vadim/ProgLanguag...n/perl2php.html но там не все что мне нужно знать. КОНКРЕТНЫЙ ВОПРОС:

Кака это понимать?
Код


open_doc1: {
      &init_vars();
      if ( ($status=&init_io(@_)) ne "ok") {
         last;
      }
      if ( ($status=&init()) ne "ok") {
         &close_document();
         last;
      }
      return "ok";
   }


немного поясню... мне не понятно    open_doc1: { ... } это что?

Это сообщение отредактировал(а) cremnet - 15.5.2009, 14:58
PM MAIL   Вверх
amg
Дата 15.5.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1145
Регистрация: 3.8.2006
Где: Новосибирск

Репутация: 38
Всего: 50



Цитата(cremnet @  15.5.2009,  14:42 Найти цитируемый пост)
open_doc1: { ... } это что?
Однако...
Это метка, указывающая на блок (составной оператор) (в фигурных скобках). 
Вообще то обычно метки используются только для выхода из внешних циклов с помощью next/last... 

PM MAIL   Вверх
cremnet
Дата 15.5.2009, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



можно ли считать эту метку функцией? вобщем расположена она внутри другой функции и нигде к этой метке обращения нет... вобщем я даж не пойму ее действия smile 
Код

   sub _open_document{
       local($status)="";
       open_doc1: {
          &init_vars();
          if ( ($status=&init_io(@_)) ne "ok") {
             last;
          }
          if ( ($status=&init()) ne "ok") {
             &close_document();
             last;
          }
          return "ok";
        }
        $status;
    }

для чего служат метки? какой переменной присваевается в это случае результат выполнения этой метки
PM MAIL   Вверх
cremnet
  Дата 15.5.2009, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 15.5.2009

Репутация: нет
Всего: нет



Я тут немного полистал google >>>> perl + метка .... 

Цитата

 МЕТКА - это несколько символов, которые оканчиваются двоеточием ':',
     например:

     LABEL:
     FOO:
     METKA:

     В Perl есть две конструкции GOTO для работы с метками:

     goto МЕТКА
     goto ВЫРАЖЕНИЕ


так вот... в моем случае  open_doc1 используется один раз и потом нигде не вызывается. Значит ли это что внутренний код этой метки не выполнятеся? а если выполняется смысл было ставить эту метку?
PM MAIL   Вверх
sir_nuf_nuf
Дата 16.5.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 920
Регистрация: 6.1.2008

Репутация: 14
Всего: 31



Цитата(cremnet @  15.5.2009,  16:38 Найти цитируемый пост)
open_doc1 используется один раз и потом нигде не вызывается.

Это значита, что саму метку можно убрать.

Но код выполняется как если бы метки не было. 
Работает абсолютно аналогично меткам в C.
Пример
Код

sub function1 {
  my $i = 1;
loop: {
  $i = 2;
  last loop;
  $i = 3;
  }
  return $i;
}

здесь значение $i - будет 2.
если бы не было оператора last loop - было бы 3.


А вообще код у вас довольно старый и извращенный.. 
например "&" перед именем функции - давно уже можно не писать 


--------------------
user posted image
user posted image
PM MAIL Jabber   Вверх
barfly
Дата 9.11.2009, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 28.11.2008

Репутация: нет
Всего: нет



В тему, помогите перевести 4 строчки с perl на php
Код

$x =~ s/^\s+//;
$x =~ s/\s+$//;
$x =~ s/\s+/_/g;
$x =~ s/[$z-$y$w-$v$u$t-$s]//g;

PM MAIL   Вверх
krypt3r
Дата 9.11.2009, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 9.6.2009

Репутация: 2
Всего: 16



Код:
Код

$x =~ s/^\s+//;
$x =~ s/\s+$//;

в PHP будет таким:
Код

$x = trim ($x);

Строка
Код

$x =~ s/\s+/_/g;

будет иметь вид
Код

$x = preg_replace ('/\s+/', '_', $x);

Ну и строка
Код

$x =~ s/[$z-$y$w-$v$u$t-$s]//g;

преобразуется в
Код

$x = preg_replace ('/[$z-$y$w-$v$u$t-$s]/', '', $x);

Кроме того, preg_replace работает с массивами и можно все записать так
Код

$x = preg_replace (array ('/^\s+/', '/\s+$/', '/\s+/', '/[$z-$y$w-$v$u$t-$s]/'),
    array ('', '', '_', ''), $x);



Это сообщение отредактировал(а) krypt3r - 9.11.2009, 20:52
PM MAIL   Вверх
Logo
Дата 9.11.2009, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 694
Регистрация: 22.7.2008

Репутация: 3
Всего: 10



Цитата(krypt3r @ 9.11.2009,  20:40)
Ну и строка
Код

$x =~ s/[$z-$y$w-$v$u$t-$s]//g;

преобразуется в
Код

$x = preg_replace ('/[$z-$y$w-$v$u$t-$s]/', '', $x);

Поправка, в строку 
Код

$x = preg_replace ("/[$z-$y$w-$v$u$t-$s]/", '', $x);

PM MAIL   Вверх
barfly
Дата 10.11.2009, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 28.11.2008

Репутация: нет
Всего: нет



Спасибо, камрады!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0576 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.