Perl -> サンプル

オブジェクトプログラミング2


#!/usr/bin/perl

use strict;

# use Encode;
# use utf8;
#
# utf8::is_utf8($l);
# Encode::encode('utf8',$l);
# Encode::decode('utf8',$l);

sub new
{
    my $pkg = shift; 
    my @row;
    my $obj = {
	'DIR' 		=> 'IN',
	'LOG'		=> \@row,
	'Time'		=> undef,
	'LogNameBase'	=> 'UrlConvert',
    };
    return bless $obj,$pkg;
}

sub ExecSystem
{
	my $this = shift;
	my ($cmd) = @_;
	system("${cmd} 2> /dev/null");
	return 0;
}

sub ExecCmd
{
	my $this = shift;
	my ($cmd) = @_;
	my @out;

	open(CMD,"${cmd} 2> /dev/null |");
	my @row=;
	close(CMD);

	for(my $i=0;$i<@row;$i++){
		chomp($row[$i]);
	 	push(@out,$row[$i]);
	}
	return \@out;
}

sub Read
{
	my $this = shift;
	my ($file) = @_;
	my @out;

	open(FH,$file);
	my @row=;
	close(FH);

	for(my $i=0;$i<@row;$i++){
		chomp($row[$i]);
		push(@out,$row[$i]);
	}

	return \@out;
}

sub Out
{
	my $this = shift;
	my ($file,$row,$op) = @_;

	open(OUT,">${file}")  if($op == 0);
	open(OUT,">>${file}") if($op != 0);

	for(my $i=0;$i<@$row;$i++){
		print OUT $$row[$i]."\n";
	}
	close(OUT);
	
	return 0;
}

sub Conv
{
	my $this = shift;
	my ($row) = @_;
	my @out;
	for(my $i=0;$i<@$row;$i++){
		my $l = $$row[$i];
		$l =~ s/href=\"\/servlet\//href=\"\/sites\//g;
		$l =~ s/\.html/\.htm/g;

		if ($l ne $$row[$i]){
			my $x=$i+1;
			push(@{$this->{'LOG'}},"$x : $l");
			push(@{$this->{'LOG'}},"$x : $$row[$i]");
		}

		push(@out,$l);
	}
	return \@out;
}


sub List
{
	my $this = shift;
	my ($row) = @_;
	
	for(my $i=0;$i<@$row;$i++){
		print $$row[$i]."\n";
	}
	return 0;
}

sub main
{
	my $obj = new();
	my ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime;
	$year+=1900;
	$mon++;
	$obj->{'Time'} = sprintf('%04d%02d%02d_%02d%02d%02d',$year,$mon,$mday,$hour,$min,$sec);

	$obj->ExecSystem("find $obj->{'DIR'} -mindepth 1 -type d | sed 's/IN/OUT/g' | xargs mkdir -p");
	my $files = $obj->ExecCmd("find IN -type f");

	for(my $i=0;$i<@$files;$i++){
		my $f = $$files[$i];
		my $l = $obj->Read($f);
	    	$f =~ s/IN/OUT/;
		push(@{$obj->{'LOG'}},"$f :");
		my $w = $obj->Conv($l);
		$obj->Out($f,$w,0);
		$obj->Out("$obj->{'LogNameBase'}_$obj->{'Time'}.log",$obj->{'LOG'},1);
		@{$obj->{'LOG'}} = ();
	}

	return 0;
}

&main();
exit(0);



      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