XAMPP アドオンのPerlを入れ替える (Windows 10)

XAMPPのPの一つであるPerlは簡易版のStrawberry Perlであり、開発で使用するにあたって不便なことが多いためフルバージョンを導入する必要がある。
新バージョンのPerlをインストールするにあたってPPMのサポートは終了されたようなのでついでに今回はStrawberry PerlでCPANしてみることにする。

>Note: PPM has been removed from ActivePerl 5.28, and will no longer build many packages for previous versions of ActivePerl. To address these shortcomings, ActiveState has introduced the ActiveState Platform, which provides a whole new way to build and deploy modules starting with Perl 5.32. Interested? Let us show you how it works.
-https://www.activestate.com

# １.　XAMPPをダウンロードし初期設定を行う。
（今回はPHP バージョン7.4のものをインストール。）

XAMPPの環境構築については省略しますが

https://www.javadrive.jp/xampp/


こちらの記事がとても分かりやすくお世話になりました。



▼MariaDBに関するもの
・rootアカウントのパスワードを設定　‐　https://www.javadrive.jp/xampp/mysql/index2.html
・phpMyAdminのログイン/パスワードに関する設定　‐　https://www.javadrive.jp/xampp/mysql/index3.html

▼Perlに関するもの
・CGI(Perl)を利用するためのApacheの設定　‐　https://www.javadrive.jp/xampp/perl/index2.html
・サンプルコードを使ったCGI(Perl)動作確認　‐　https://www.javadrive.jp/xampp/perl/index3.html


▼　念のため
・php.iniの編集　‐　https://qiita.com/neneta0921/items/aee3861d414c687c8fdf



# 2. フルバージョンのPerlをインストールする


公式からXAMPPと同じレベルにPerlをインストール


https://strawberryperl.com/


### フォルダ名のリネーム

Strawberry　→　perl　にリネーム。(個人的に分かりにくいため)

```
C： ------- XAMPP
   |
    ------- Strawberry → perl
```


### 環境変数のセット

環境変数もイチゴになっていると思うので編集する。
![スクリーンショット (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668363/a02d8d89-d5ac-b12d-ee90-471eb69a77fd.png)

↓


![スクリーンショット (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668363/22052e18-e0fb-e4be-3ff2-207ce123e09a.png)




※2021-05-31[追記] 最初からインストール時にインストール先のフォルダを(C:\perl\ ）とすればこの設定は必要ありませんでした。


一旦変更されているかを確認するためにバージョンチェックして以下のようにバージョンが表示されたらOK

```cmd:cmd
C:\Users\jagaimo300> perl -v

This is perl 5, version 32, subversion 1 (v5.32.1) built for MSWin32-x64-multi-thread

Copyright 1987-2021, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.

```


# 3. 先頭行のおまじない（#! /usr/bin/perl）で動かす。
Perlの先頭行にあるインタプリンタの指定ですが、XAMPPでは　#!"C:\xampp\perl\bin\perl.exe"　がデフォルトになっているかと思います。
しかし、実際に見たものの多くは、　#!/usr/bin/perl　でした。（UNIXだと#!/usr/local/bin/perlもある）
そのため　#! /usr/bin/perl　で動かせるようにしていく。

```Perl:test.cgi
#!"C:\xampp\perl\bin\perl.exe"

print "Content-type: text/html\n\n";

print "Hello World \n\n";

```

↓　こうすると一旦は５００番エラーになるかと思います。


```Perl:test.cgi
#!/usr/bin/perl

print "Content-type: text/html\n\n";

print "Hello World \n\n";


```

## ジャンクションの作成
さてここからジャンクションを作成していきます。


```cmd:cmd
C:\>mklink/j c:\usr c:\perl\perl
```

Cドライブでコマンド実行。
これだけでOKです。


![スクリーンショット (11).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668363/4cc011ef-1fb5-63a7-e53d-3a4a7e7fd343.png)



# 4. CPANする。

いままではPPMしてGUIでぽちぽちモジュールをインストールしていましたがCPANに初挑戦

### CPANとは
>高速処理が特徴のプログラミング言語「Perl」で利用可能なプログラムや文書を収集しているWebサイトのことである。
CPANでは、世界中のPerl開発者が自分で開発したPerl関連データの登録を受け付けている。登録されるデータには、Perlに関するプログラムモジュール（ソフトウェア部品）や、Perlに関連するドキュメント、あるいはPerlが実行できるプラットフォームのソースコードなどがある。それらを一手に収集し、無償でダウンロード提供している。ミラーサーバーの台数は世界中で数百機に及ぶといわれる。
- weblio辞書






一旦DBIモジュールを入れてみることにする。

インストールするモジュールの名前はこちらから確認できるようです。
https://metacpan.org/
![スクリーンショット (10).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/668363/31386b71-5357-2d2a-ca65-ccf8d55698e4.png)

### さて、いざCPAN実行

```cmd:cmd
C:\Users\jagaimo300>cpan

cpan> install DBI

Fetching with LWP:
http://cpan.strawberryperl.com/authors/01mailrc.txt.gz
Fetching with LWP:
http://cpan.strawberryperl.com/modules/02packages.details.txt.gz
Fetching with LWP:
http://cpan.strawberryperl.com/modules/03modlist.data.gz
Creating database file ... Done!
DBI is up to date (1.643).
```


以上で完了のようです。思ったより簡単にできて便利ですね。

### 最後に
今回はCPANでPerlのモジュールをインストールしてみました。PPMの一括ダウンロードとか好きだったのですが、CPANをもっと学んで使いこなしたいと思います。ありがとうございました。