基本情報技術者 2017年 秋期 午前(科目A) 問08
問題文
Perlの実行に関する記述のうち、適切なものはどれか。
選択肢
ア:UNIX用として開発されており、Windows用の言語処理系はない。
イ:実行にWebサーバを必要とする言語であり、CGIの開発に適している。
ウ:動的デバッグは、言語処理系から独立したプログラムを実行して行う。
エ:プログラムをコンパイルしたファイルを事前に用意する必要はない。(正解)
Perlの実行に関する記述のうち、適切なものはどれか。【午前2 解説】
要点まとめ
- 結論:Perlは原則インタプリタで動作し、通常はソースをそのまま解釈実行するため事前にネイティブ実行ファイルを用意する必要はありません。
- 根拠:Perlの言語処理系がソースを読み解釈して実行する方式であり、コンパイルして実行形式を必須とする言語とは実行形態が異なります。
- 差がつくポイント:PerlはWindows向け処理系(ActivePerl, Strawberry Perl等)やCGI利用、mod_perl埋め込みなど多様な運用が可能である点を理解しておくと誤答を避けられます。
正解の理由
正解は エ です。
Perlは通常インタプリタ型言語で、ソースコードをそのまま言語処理系(interpreter)が読み解釈して実行します。したがって事前にコンパイルしてネイティブ実行ファイル(.exe 等)を用意する必要は基本的にありません。なお、必要に応じて perlcc やパッケージツール(PAR::Packer の pp 等)で実行形式にまとめる手段はありますが、通常運用においては不要です。
Perlは通常インタプリタ型言語で、ソースコードをそのまま言語処理系(interpreter)が読み解釈して実行します。したがって事前にコンパイルしてネイティブ実行ファイル(.exe 等)を用意する必要は基本的にありません。なお、必要に応じて perlcc やパッケージツール(PAR::Packer の pp 等)で実行形式にまとめる手段はありますが、通常運用においては不要です。
よくある誤解
- 「UNIX専用」:PerlはUNIX発祥ですが、Windows用の処理系(ActivePerl、Strawberry Perl など)が存在しクロスプラットフォームで利用できます。
- 「Webサーバが必須」:CGI開発に向いているのは事実ですが、Perl自体はコマンドラインでもスクリプトとして単独で動作します。WebサーバはCGIなど用途に依存して必要になるだけです。
- 「動的デバッグは言語処理系と独立したプログラムで行う」:動的解析や実行時デバッグは言語処理系上で行うことが多く、必ず独立した別プログラムが必要なわけではありません。
解法ステップ
- 各選択肢のキーワード(UNIX専用/Webサーバ必須/動的デバッグの定義/コンパイル要否)をピックアップする。
- Perlの基本特性(インタプリタ型、クロスプラットフォーム、CGI使用可)と照合する。
- 「必須」や「独立」といった断定表現が正しいかどうかを検証する。
- 実態と一致する選択肢を選ぶ(該当:エ)。
選択肢別の誤答解説
- ア: UNIX用として開発されており、Windows用の言語処理系はない。
誤り。PerlはUNIXで広まったが、Windows向けの処理系(ActivePerl、Strawberry Perl 等)が広く提供されています。 - イ: 実行にWebサーバを必要とする言語であり、CGIの開発に適している。
誤り。CGI開発に適している点は正しいが、Perl自体の実行にはWebサーバは不要で、コマンドラインで直接実行できます。 - ウ: 動的デバッグは、言語処理系から独立したプログラムを実行して行う。
誤り。実行時デバッグ(動的デバッグ)は言語処理系内蔵のデバッガやREPL的実行、あるいは言語処理系と連携するツールで行うことが多く、「必ず独立して行う」とは限りません。 - エ: プログラムをコンパイルしたファイルを事前に用意する必要はない。
正しい。Perlはインタプリタがソースを解釈して実行するため、事前にネイティブ実行ファイルを用意する必要は通常ありません。
補足コラム
- Perlの実行例:コマンドラインで
perl script.pl
とするだけで実行できます。 - 文法チェックだけ行うときは
perl -c script.pl
で構文チェック(コンパイルのような静的検査)を実行できますが、これは実行ファイルを作る操作ではありません。 - 実行可能ファイルにしたい場合は、perlcc や PAR::Packer(ppコマンド)でバイナリパッケージ化できますが、これは運用上の便宜であって必須ではありません。
- Web連携:従来のCGIに加え、mod_perl(Apache組み込み)、PSGI/Plack といったモダンな仕組みもあります。
FAQ
Q1. Perlは完全にインタプリタだけですか?
A1. 基本はインタプリタですが、内部でバイトコード化して実行する実装もあり、外部ツールでバイナリ化することも可能です。
A1. 基本はインタプリタですが、内部でバイトコード化して実行する実装もあり、外部ツールでバイナリ化することも可能です。
Q2. WindowsでPerlを使えますか?
A2. はい。ActivePerl や Strawberry Perl 等、Windows向けの実装があり問題なく使用できます。
A2. はい。ActivePerl や Strawberry Perl 等、Windows向けの実装があり問題なく使用できます。
Q3. CGI以外の用途でもPerlは適してますか?
A3. はい。テキスト処理、システム管理スクリプト、簡易なWebアプリなど多用途に使われています。
A3. はい。テキスト処理、システム管理スクリプト、簡易なWebアプリなど多用途に使われています。
Q4. コードを配布するときは必ずコンパイルすべきですか?
A4. 必須ではありません。配布形態やセキュリティ、配布先の環境に応じてパッケージ化するか検討してください。
A4. 必須ではありません。配布形態やセキュリティ、配布先の環境に応じてパッケージ化するか検討してください。
関連キーワード: Perl、インタプリタ、コンパイル不要、CGI、mod_perl、ActivePerl、Strawberry Perl、PAR::Packer、perl -c、スクリプト実行

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

