忍者ブログ

Wordpressメモとかアフィめもとか

Wordpress,PHP,アフィリエイトとかの個人メモを記録していくよ

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

perlライブラリ、モジュール

perlでライブラリを使う。
requireとかpmモジュールとかpackage,useとか?

  • 別ファイルを読み込む(require)

[main.pl]

#!/usr/bin/perl

use strict;
use warnings;

require 'func.pl';

print func(1,2);


[func.pl]

use strict;
use warnings;

sub func {
  my $a = $_[0];
  my $b = $_[1];
  return $a + $b;
}


[結果]

$ ./main.pl
3

  • package宣言Ver

[main.pl]

#!/usr/bin/perl

use strict;
use warnings;

require 'func.pl';

print Func::func(1,2);


[func.pl]

package Func;

use strict;
use warnings;

sub func {
  my $a = $_[0];
  my $b = $_[1];
  return $a + $b;
}
1;
 

package Func;で名前宣言し、呼び出すほうは完全修飾名「Func::func()」で呼ぶ。
最後の1はおまじない。(packageは真以外を返さないといけないので)
  • .pmモジュールをuseする。

[main.pl]

#!/usr/bin/perl

use strict;
use warnings;
use Func;

print func(1,2);


[Func.pm]

package Func;

use strict;
use warnings;

use Export;
our @ISA = qw(Exporter);
our @EXPORT = qw(func);


sub func {
  my $a = $_[0];
  my $b = $_[1];
  return $a + $b;
}
1;
 

モジュールはFunc.pm
main側のuseが勝手にFuncのfuncをimportしてくれるので、main.plでfunc()のみで呼び出せる。(完全修飾名の必要が無い)
useをする事は

BEGIN { 
  require Func;
  import Func;
}

がコンパイルの際に1度だけ実行される。
(requireは実行時に解釈)


拍手[0回]

PR

perlでDBIプログラムの例外処理

PerlでDB接続プログラムの基本部分

DB接続したらすぐeval

$dbh = DBI->connect($DSN, $USER, $PASS,
                   {RaiseError => 1, PrintError => 0, AutoCommit => 0 }) || die  "DB connect error :$!";

eval{
  処理;
  処理;
  処理;
  ...
  $dbh->commit;
  $dbh->disconnect;
};
if( $@ ){
  $dbh->rollback;
  $dbh->disconnect;
  print $@;
}

eval{};のなかの処理でエラーが起こればその瞬間dieしてeval{};を抜ける。
エラーはif( $@ )で引っかかるので、そこで例外処理をする。
tyy ~ catchみたいなもの?


 

拍手[0回]

Perl,DBI 結果を取得はfetchall_arrayref

PerlでDBIモジュールを利用し、DBからデータを取得するとき。

fetchall_arrayrefを使う。

$ref = $sth-> fetchall_arrayref;
foreach my $val ( @$ref ){
  print $val->[0];
}



拍手[1回]

perlのコマンドラインから引数を受け取る

perlのコマンドラインから引数を受け取るには

実行
# ./test.pl arg1 arg2

arg1と2が引数ね

test.plの中身

print $ARGV[0];
print $ARGV[1];





拍手[0回]

perlのサブルーチン

perlのサブルーチンあれこれ
  • 宣言と定義

sub func {
・・・
}

  • 呼出し
同じファイルの場合
&func();
別のファイルの場合

呼び出される方をパッケージにする
#!/usr/local/bin/per -U
package functions;
sub func1 {
・・・
}
1;
(最後に必ず「真」を返す決まりなので1;で終わらせる。おまじない。)

呼び出すほうで、パッケージをrequireする。
require './functions.pl';
functions::func1();

  • 引数の受取り
function内で $_[n]に格納されている
nは0からの添え字
  • サブルーチンからの戻り
returnを使う
returnを省略すると最後に評価された値
 






拍手[0回]

ブログ内検索

最新コメント

広告

プロフィール

なんとなくはじめてみたよ

忍者ツールズプロフィールは終了しました

カウンター