Используйте Javascript:
OpenSameTab = '<script language="JavaScript" type="text/JavaScript">window.location = \'%s\';</script>'
, а затем
print OpenSameTab % 'file.py'
Нет, нет встроенной перечислимой конструкции. Perl не делает большого строгого ввода, таким образом, я думаю, что существует на самом деле мало потребности в одной.
, По-моему, Readonly
подход, который Вы использовали, серьезен.
существует также более традиционное constant
прагма.
use constant {
HOME => 'Home',
WORK => 'Work',
MOBILE => 'Mobile',
};
$phone_number->{type} = HOME;
Негласно, это настраивает функцию для каждой константы, которая возвращает значение, как так.
sub HOME () { 'Home' }
я придерживался бы с Readonly
, если Вы не хотите использовать в своих интересах то свойство, например:
package Phone::Type;
use constant {
HOME => 'Home',
#...
};
package main;
print Phone::Type->HOME, "\n";
Perl не поддерживает понятие исходно, но существуют модули для добавления этой функциональности
Ваш путь является более, чем соответствующим.
можно также создать перечисления с Американским лосем:: Util:: TypeConstraints, если Вы, оказывается, используете Американского лося. (Которым необходимо быть.)
Perl действительно имеет тип перечисления, как в C. Попробуйте это для получения подробностей.
Например:
use enum qw(HOME WORK MOBILE);
Теперь у нас есть:
HOME == 0
WORK == 1
MOBILE == 2
Вы можете также сами устанавливайте индексы:
use enum qw(HOME=0 WORK MOBILE=10 FAX);
Теперь у нас есть:
HOME == 0
WORK == 1
MOBILE == 10
FAX == 11
Подробнее см. здесь
Обратите внимание, что это поддерживается не во всех версиях Perl. Я знаю, что v5.8.3 не поддерживает его, а v5.8.7 поддерживает.