2014/10/07(火) [n年前の日記]
#2 [perl][windows] Windows上で異なるバージョンのPerlを切り替えたい
_2014/10/08追記。
Strawberry Perl とも切り替えられるbatファイルを書きました。
ActivePerl 5.16.3 と ActivePerl 5.8.x を切り替えて使いたい。環境変数 PATH の中をその都度書き換えれば済みそうではあるけど…。
例えば、
batファイルの中で、
これを繰り返していくと、PATHの最初のほうに Perlのパスがいくつも並んだ状態になってなんか嫌だなと。
ふと、Windows Vista や Windows7 で使える _シンボリック・リンク を使えばいいのではと思えてきた。
例えば、
と思って、切り替え用のbatファイルを書いてみたけれど。mklink は管理者権限じゃないと使えないことをすっかり忘れてました。これではちと不便。でもまあ、頻繁に切り替えるものでもないだろうから、別にコレでもいいか…。
一応batファイルの中身を晒しておきます。
plch.bat
ちなみに、*NIX環境なら perlbrew なる切り替えツールが使えるそうで。
Windows 版の perlbrew は無いのかなとググってみたら、 _May I use Strawberry Perl and ActiveState Perl simultaneously in one computer? - Stack Overflow に情報が。 _App-perlbrew | Perl Package Manager Index (PPM) | ActiveState Code があるよ、との話。
ところが、ActivePerl 5.16 は perlbrew に対応してないようで。今現在入手できる ActivePerl って 5.16 しかないじゃないですか。つまり使えないじゃないですか。なんだかな。
ActivePerl 5.16.3 と ActivePerl 5.8.x を切り替えて使いたい。環境変数 PATH の中をその都度書き換えれば済みそうではあるけど…。
例えば、
- C:\Perls\Perl58
- C:\Perls\Perl516
batファイルの中で、
set PATH=C:\Perls\Perl58\bin;C:\Perls\Perl58\site\bin;%PATH%とすれば、PATHの最初に ActivePerl 5.8.x の指定がくるので、perl -v で表示されるバージョンは 5.8.x になる。つまり Perl 5.8.x を選んで使える状態になると言えばなるのだけど。
これを繰り返していくと、PATHの最初のほうに Perlのパスがいくつも並んだ状態になってなんか嫌だなと。
ふと、Windows Vista や Windows7 で使える _シンボリック・リンク を使えばいいのではと思えてきた。
mklink /d 作成リンク名 元フォルダとすれば、フォルダのシンボリックリンクが作れる。作成リンク名にアクセスすると、元フォルダにアクセスしてるも同然の状態になる。
例えば、
mklink /d C:\Perl C:\Perls\Perl58
mklink /d C:\Perl C:\Perls\Perl516を使い分ければ…。PATH には C:\Perl\bin;C:\Perl\site\bin だけ追加しておいて、それ以上弄らない。後は、C:\Perl が Perl 5.8.x と Perl 5.16.x のどちらを指してるのか変更すればいい。
と思って、切り替え用のbatファイルを書いてみたけれど。mklink は管理者権限じゃないと使えないことをすっかり忘れてました。これではちと不便。でもまあ、頻繁に切り替えるものでもないだろうから、別にコレでもいいか…。
一応batファイルの中身を晒しておきます。
plch.bat
@echo off if "%1"=="58" goto SETPATH1 if "%1"=="516" goto SETPATH2 echo Perlのパスを切り替えます。(mklink /d を使ってシンボリックを張り直し) echo. echo 1 : Perl 5.8 echo 2 : Perl 5.16 echo. set USERINPUTSTR= set /P USERINPUTSTR="切り替えたい番号を選んでください : " if "%USERINPUTSTR%"=="1" goto SETPATH1 if "%USERINPUTSTR%"=="2" goto SETPATH2 echo. echo Usage: plch 58 echo plch 516 goto END :SETPATH1 set PPATH=C:\Perls\Perl58 goto SETPERLDIR :SETPATH2 set PPATH=C:\Perls\Perl516 goto SETPERLDIR :SETPERLDIR @echo on rmdir C:\Perl mklink /d C:\Perl %PPATH% @echo off echo. echo Perlのパスを %PPATH% に設定しました echo. pause :ENDDOS窓を管理者権限で開いて、plch 58 とか plch 516 とか打てば切り替えられる、みたいな。
ちなみに、*NIX環境なら perlbrew なる切り替えツールが使えるそうで。
Windows 版の perlbrew は無いのかなとググってみたら、 _May I use Strawberry Perl and ActiveState Perl simultaneously in one computer? - Stack Overflow に情報が。 _App-perlbrew | Perl Package Manager Index (PPM) | ActiveState Code があるよ、との話。
ところが、ActivePerl 5.16 は perlbrew に対応してないようで。今現在入手できる ActivePerl って 5.16 しかないじゃないですか。つまり使えないじゃないですか。なんだかな。
[ ツッコむ ]
以上です。