Так что ли

BEGIN {
    use Devel::CheckOS qw(os_is);
    if ( os_is('Unix') ) {
        eval q[ use open ':locale';];
    }
}

https://github.com/mishin/gists/blob/master/trans.pl

p.s.
Mons, кстати твой код не работает
  require open;
  open->import(":locale") 

p.s. # can't use require_ok() here, with a name like 'open'
ok( require 'open.pm', 'requiring open' ); из 
https://metacpan.org/source/JHI/perl-5.8.0/lib/open.t

работает так:

BEGIN {
 require 'open.pm';
         if ( $^O ne 'Win32' ) {
         open::import('open','locale');
    }
}


ну я еще люблю модули, поэтому так

BEGIN {
    use Devel::CheckOS qw(os_is);
    require 'open.pm';
    if ( os_is('Unix') ) {
        open::import( 'open', 'locale' );
    }
}

https://github.com/mishin/gists/blob/master/trans.pl



28.10.2013, 17:17, "Олег Алексеенков" <[email protected]>:
> Nikolay Mishin <[email protected]> писал(а) в своём письме Mon, 28 Oct 2013
> 17:10:27 +0400:
>
> в eval ""
>
>>  Moscow PM,привет!!
>>
>>  есть скрипт, в котором написано
>>
>>  use open ':locale';
>>
>>  в unix все работает
>>
>>  в win32
>>
>>  Cannot figure out an encoding to use at trans.pl line 25
>>
>>  как сделать так, чтобы use использовалась взависимости от OS
>>
>>  в BEGIN что-ли запихнуть?
>>
>>  use Devel::CheckOS qw(os_is);
>>
>>  BEGIN {
>>  if ( os_is('Unix') ) {
>>
>>  use open ':locale';
>>  }
>>  }
>>
>>  https://github.com/mishin/gists/blob/master/trans.pl
>
> --
> Moscow.pm mailing list
> [email protected] | http://moscow.pm.org

-- 
С уважением
Николай Мишин

-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить