Perl/Perlの基礎知識

安全なPerlプログラムを書くための3つのポイント(6ページ目)

プログラミングをしていると知らずのうちにバグやセキュリティホールを生み出してしまう事があります。うっかりミスが大きな問題に発展しないように、プログラミング時の3つのポイントをご紹介します。

井上 みやび子

執筆者:井上 みやび子

Perlガイド

プログラムの入力とサブルーチンの引数のダブルチェックをする理由

さてこうして見ると、プログラムの入力チェックとサブルーチンの引数チェックを両方やるもう一つの意味合いにお気づきになるかもしれません。この2つは実はちょっと役割が違うのです。

プログラムの入力チェックは、プログラムを使う人に対して、入力エラーがあった事や、ではどうすればいいかなどを伝える役割があります。一方、サブルーチンの方は、そもそも使い回しをする目的でサブルーチンを書きますので、なるべく色々なシチュエーションで使用するためには利用者向けのエラーメッセージの出力までは行いません。

また、先ほどの引数チェック追加の例では初期値を設定してしまって、変な値を強制的に排除しています。このような初期値設定はサブルーチンを書くときにはよく行う事なのですが、利用者からすればどの値が使われたか分からず、混乱の元にもなる点です。

このためプログラムの入力チェックを省いてしまうと、プログラムを使う人には何で「-30」と入力しているのに「25」分の長さで出力されるのかが分からずじまいになってしまいます。ですので、入力をチェックしてエラーがあるのなら、問題となったエラーの内容を分かりやすく出力する必要があります。このため、サブルーチンの引数チェックに加えて入力チェックも行う必要があるのです。

【まとめ】2つのチェックの役割の違い

  • サブルーチンの引数チェック → 実行エラーを回避
  • プログラムの入力チェック  → エラーをユーザに知らせる

安全なプログラムを書くためのポイントまとめ

さてでは最後に、最初に挙げた安全なPerlプログラムを書くための3つのポイントを別の角度からも整理しておきましょう。

  • 【原則】「入出力」は必ずチェックする
  • 【付則】「入出力」とは以下の3か所
    1. 外部ファイルの入出力
    2. プログラムへの外部からの入力
    3. サブルーチンへの入力
  • 【手段】開発時にはテイントモード(-T)でチェックする

【編集部おすすめの購入サイト】
楽天市場で Perl 関連の書籍を見るAmazon で Perl 関連の書籍を見る
【編集部からのお知らせ】
・「20代男性俳優」について、アンケート(2024/5/31まで)を実施中です!(目安所要時間5分)

※抽選で30名にAmazonギフト券1000円分プレゼント
※回答上限に達し次第、予定より早く回答を締め切る場合があります
  • 前のページへ
  • 1
  • 4
  • 5
  • 6
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます