プログラム構文 -> オブジェクト指向

オブジェクト指向(Perl)

サンプルプログラム

メイン(./main.pl)
#!/usr/bin/perl

use strict;

# モジュールの宣言                           #
#     ./module/FileAccess.pm ファイルに記述  #
use module::FileAccess;

sub main
{
   my ($obj);
   my ($rec,$file);

   # 引数をチェック #
   if (!$ARGV[0]){
     print "Usage: $0 {filename}\n";
     exit(1);
   }
   $file=$ARGV[0];

   # インスタンス生成 #
   $obj = new FileAccess;
       # 別の記述方法 #
       #    $obj = FileAccess->new();

   # ファイルの存在を確認                        #
   #    ディレクトリはインスタンス変数を参照する #
   if (! -f "$obj->{'DIRNAME'}/$file" ){
      print "$obj->{'DIRNAME'}/$file Not Found.\n";
      exit(1);
   }

   # ファイル読込みメソッドを実行  #
   #    戻り値は配列のリファランス #
   $rec = $obj->FileRead($file);

   # 配列の内容を表示する #
   foreach my $line (@$rec){
     print $line."\n";
   }

}

main();
exit(0);
クラス(./modules/FileAccess.pm)
#!/usr/bin/perl -w

package FileAccess;

use strict;

require './module/Env.conf';

# クラス #
sub new
{
   my $pkg = shift;
   my $obj = bless {
      # インスタンス変数を定義 #
      'DIRNAME'  => "$Env::BaseDir",
      'HOSTNAME' => "localhost"
   },$pkg;
   return $pkg,$obj;
}


# メソッド #
sub FileRead
{
   my $this = shift;
   my ($filename) = @_;
   my (@rec);

   open(FH,"$this->{'DIRNAME'}/${filename}");
   while(){
      chomp;
      push(@rec,$_);
   }
   close(FH);
   return \@rec;   配列(@)のリファランス(\@)を返す
}

1;
読込み用設定ファイル(./modules/Env.conf)
#!/usr/bin/perl

package Env;

$BaseDir = '/etc';

変数を使用する際 $Env::BaseDir と記述する

実行結果
# ./main.pl passwd
root:x:0:0:Super-User:/:/sbin/sh
daemon:x:1:1::/:
bin:x:2:2::/usr/bin:
sys:x:3:3::/:
adm:x:4:4:Admin:/var/adm:
lp:x:71:8:Line Printer Admin:/usr/spool/lp:
uucp:x:5:5:uucp Admin:/usr/lib/uucp:
nuucp:x:9:9:uucp Admin:/var/spool/uucppublic:/usr/lib/uucp/uucico
smmsp:x:25:25:SendMail Message Submission Program:/:
listen:x:37:4:Network Admin:/usr/net/nls:
webservd:x:80:80:WebServer Reserved UID:/usr/local/apache2:
nobody:x:60001:60001:NFS Anonymous Access User:/:
noaccess:x:60002:60002:No Access User:/:
nobody4:x:65534:65534:SunOS 4.x NFS Anonymous Access User:/:
#


先頭へ

      Document-Folder          一覧
HP-UX
HULFT
JAVA
JP1
JavaScript
Linux
MAC
PHP
Perl
Python
Ruby
SOA
Solaris
Unix全般
Windows
XML
エクセル
スタイルシート
セキュリティー
データベース
ネットワーク
パソコン
ブラウザ
プログラム構文
仮想化
          RSS-Folder
ニュース
   アットマーク・アイティ(@IT)
   シンクイット(ThinkIT)
   インターネットコム
   インターネットウォッチ
   日経IT-Pro
   日経パソコン
   CNET Japan
   ZD-NetJapan
   MYCOM
   RBB-Today
ベンダー
   日本IBM
   日本HP
   サンマイクロシステムズ
   NEC
   富士通
   日立
ソフトウェア
   マイクロソフト
   トレンドマイクロ
   オラクル
   サイボウズ
   Mozilla
   野村総合研究所
   (その他ソフトウェア企業)
更新履歴 一覧
 07/08 PERF
プログラム構文
 07/07 PERF
プログラム構文
 06/25 オブジェクトプログラミング2
Perl>サンプル
 07/12 クローン作成
仮想化>vCenter
 07/12 vyatta設定
ネットワーク>vyatta
 07/12 vyattaインストール
ネットワーク>vyatta
 07/12 リポジトリサーバ
Linux>サーバ構築
 07/05 VMwareのインストール
仮想化>VMware
 07/05 PXEブート
仮想化>KVM
 07/01 DHCPでのPXEブート
仮想化>KVM
 06/27 qcow2仮想DISK作成
仮想化>KVM
 06/13 NWの設定
仮想化>VMwareEsxi
 06/13 IPアドレスの変更
仮想化>VMwareEsxi
 06/12 自動ssh
Unix全般>シェル>Bash
 06/12 diffプログラミング
Python
Google