posted by 빠담아빠다 2016. 4. 25. 09:30

1. yyyymmdd 를 이용하여 내일 구하기 (응용가능)

 

sub next_date{

        $tstr="";
        $tval="";
        $time="";

        $tstr = $_[0];
        @tval = ( $tstr =~ m|(\d{4})(\d{2})(\d{2})| );
        $time = timelocal( 0, 0, 0, $tval[2], $tval[1] - 1, $tval[0] );
        $trtime =strftime ( "%Y%m%d", localtime( $time + 24 * 3600 ) ), "\n";

        return $trtime;


}

 

2. yyyymmddhhmiss를 이용하여 epoch time 구하기

 

sub make_time{

        my $rcvdate = $_[0];
        my $s_year=substr($rcvdate,0,4)-1900;
        my $s_mon=substr($rcvdate,4,2)-1;
        my $s_day=substr($rcvdate,6,2);
        my $s_hour=substr($rcvdate,8,2);
        my $s_min=substr($rcvdate,10,2);
        my $s_sec=substr($rcvdate,12,2);
        my $gap = mktime ($s_sec,$s_min,$s_hour,$s_day,$s_mon,$s_year);

        return $gap


}

 

3. 월을 비교해서 실제 연도 구하기

# dispatchtime과 completime이 다른 해애 시작 될경우
# 두 값을 비교하여 year값을 구하는 함수
sub date_realyear{

        my $rcvdispatch="";
        my $rcvdispatch=$_[0];
        my $dismon="";
        my $rcvcomplete="";
        my $rcvcomplete=$_[1];
        my $common="";

        $dismon = substr($rcvdispatch,4,3);
        $dismon =$des{$dismon};
        if(substr($dismon,1,1) eq ""){$dismon = "0$dismon";}

        $common = substr($rcvcomplete,4,3);
        $common =$des{$common};
        if(substr($common,1,1) eq ""){$common = "0$common";}

        $rdistime = "$year$dismon";
        $rcomtime = "$year$common";

        if($rdistime > $rcomtime){
                $dyear=$year-1;
                $cyear=$year;
        }else{
                $dyear=$year;
                $cyear=$year;
        }

        return $dyear,$cyear;

}

 

 

4. 연월일 구하기

 

# 연월일을 뽑아 낼 수 있도록 만든 함수.
sub date_ymd{

        my $rcvdate="";
        my $rcvdate=$_[0];
        my $tryear=$_[1];
        my $trmon="";
        my $trday="";
        my $trhour="";
        my $trmin="";
        my $trsec="";
        my $trtime="";

        $trmon = substr($rcvdate,4,3);
        $trmon =$des{$trmon};
        if(substr($trmon,1,1) eq ""){$trmon = "0$trmon";}
        $trday = substr($rcvdate,8,2);
        $trday =~ s/ //;
        if(substr($trday,1,1) eq ""){$trday = "0$trday";}
        $trhour = substr($rcvdate,11,2);
        if(substr($trhour,1,1) eq ""){$trhour = "0$trhour";}
        $trmin = substr($rcvdate,14,2);
        if(substr($trmin,1,1) eq ""){$trmin = "0$trmin";}
        $trsec = substr($rcvdate,17,2);
        if(substr($trsec,1,1) eq ""){$trsec = "0$trsec";}

        $trtime = "$tryear$trmon$trday";

        # return $trtime
        return $trtime;

}

 

5. 연월일시분초 구하기

 

# date_ymdhms 함수는 Fri Apr  8 10:15:41 -> yyyymmddhh24miss 형식으로 변경해주는 함수
# 정확한 time을 구하기 위한 함수
sub date_ymdhms{

        my $rcvdate="";
        my $rcvdate=$_[0];
        my $tryear=$_[1];
        my $trmon="";
        my $trday="";
        my $trhour="";
        my $trmin="";
        my $trsec="";
        my $trtime="";

        $trmon = substr($rcvdate,4,3);
        $trmon =$des{$trmon};
        if(substr($trmon,1,1) eq ""){$trmon = "0$trmon";}
        $trday = substr($rcvdate,8,2);
        $trday =~ s/ //;
        if(substr($trday,1,1) eq ""){$trday = "0$trday";}
        $trhour = substr($rcvdate,11,2);
        if(substr($trhour,1,1) eq ""){$trhour = "0$trhour";}
        $trmin = substr($rcvdate,14,2);
        if(substr($trmin,1,1) eq ""){$trmin = "0$trmin";}
        $trsec = substr($rcvdate,17,2);
        if(substr($trsec,1,1) eq ""){$trsec = "0$trsec";}

        $trtime = "$tryear$trmon$trday$trhour$trmin$trsec";

        # return $trtime
        return $trtime;

}

 

'Language > Perl' 카테고리의 다른 글

[Perl] -help option sub함수  (0) 2016.04.25
[Perl] date 형식 yyyymmddhh24miss 로 변경 함수  (0) 2016.04.08
[per] today, yesterday, nextday  (3) 2016.03.10
[perl] hash of hash  (0) 2016.03.10
[perl] update 쿼리  (0) 2016.03.10
posted by 빠담아빠다 2016. 4. 25. 09:27

다음과 같이 사용할 수 있다

 


if($ARGV[0] =~ /h/){
 &help;
 exit;
}

 

 

 

sub help {
print<<EOF

1. bacct를 연도별로 나누어야 합니다.
        bacct -u all -l -C 2014/01/01,2014/12/31 > 2014.acct
        bacct -u all -l -C 2015/01/01,2015/12/31 > 2015.acct
        bacct -u all -l -C 2016/01/01,2016/12/31 > 2016.acct

2. 참조 파일
        \$file="2015.acct" <- line 수정

3. 실행방법
        $0 2015
        $0 2015 > 2015.csv


* 일별 노드별 사용시간을 구할 수 있다.
* UT = 사용시간 / (3600*24*cpu수)

EOF
}

'Language > Perl' 카테고리의 다른 글

[Perl] 날짜 관련  (0) 2016.04.25
[Perl] date 형식 yyyymmddhh24miss 로 변경 함수  (0) 2016.04.08
[per] today, yesterday, nextday  (3) 2016.03.10
[perl] hash of hash  (0) 2016.03.10
[perl] update 쿼리  (0) 2016.03.10
posted by 빠담아빠다 2016. 4. 8. 17:07

#!/usr/bin/perl



$dispatcht=&date_ymd($dispatch);



# date_ymd 함수는 Fri Apr  8 10:15:41 -> yyyymmddhh24miss 형식으로 변경해주는 함수

sub date_ymd{


        $rcvdate="";

        $rcvdate=$_[0];

        $trmon="";

        $trday="";

        $trhour="";

        $trmin="";

        $trsec="";


        $trmon = substr($rcvdate,4,3);

        $trmon =$des{$trmon};

        if(substr($trmon,1,1) eq ""){$trmon = "0$trmon";}

        $trday = substr($rcvdate,8,2);

        $trday =~ s/ //;

        if(substr($trday,1,1) eq ""){$trday = "0$trday";}

        $trhour = substr($rcvdate,11,2);

        if(substr($trhour,1,1) eq ""){$trhour = "0$trhour";}

        $trmin = substr($rcvdate,14,2);

        if(substr($trmin,1,1) eq ""){$trmin = "0$trmin";}

        $trsec = substr($rcvdate,17,2);

        if(substr($trsec,1,1) eq ""){$trsec = "0$trsec";}


        $trtime = "$year$trmon$trday$trhour$trmin$trsec";


        # return $trtime

        return $trtime;


}



'Language > Perl' 카테고리의 다른 글

[Perl] 날짜 관련  (0) 2016.04.25
[Perl] -help option sub함수  (0) 2016.04.25
[per] today, yesterday, nextday  (3) 2016.03.10
[perl] hash of hash  (0) 2016.03.10
[perl] update 쿼리  (0) 2016.03.10
posted by 빠담아빠다 2016. 3. 10. 16:48

use Time::Local;

use POSIX qw/strftime/;

##today

 $today_date=strftime "%Y%m%d", localtime;

&next_day;

&yester_day;  # 오타수정함.ㅋ

 

 

sub next_day{

   $tstr=$r_sub;

   @tval = ( $tstr =~ m|(\d{4})(\d{2})(\d{2})| );

   $time = timelocal( 0, 0, 0, $tval[2], $tval[1] - 1, $tval[0] );

   $n_sub = strftime( "%Y%m%d", localtime( $time + 24 * 3600 ) );

   $r_sub=$n_sub;

 }

 sub yester_day{

   $mstr=$today_date;

   @mval = ( $mstr =~ m|(\d{4})(\d{2})(\d{2})| );

   $mtime = timelocal( 0, 0, 0, $mval[2], $mval[1] - 1, $mval[0] );

   $yester_date = strftime( "%Y%m%d", localtime( $mtime - 24 * 3600 ) );

 } 

'Language > Perl' 카테고리의 다른 글

[Perl] -help option sub함수  (0) 2016.04.25
[Perl] date 형식 yyyymmddhh24miss 로 변경 함수  (0) 2016.04.08
[perl] hash of hash  (0) 2016.03.10
[perl] update 쿼리  (0) 2016.03.10
[perl] 대표날짜로 일정기간 이전 이후 구하기  (0) 2016.03.10
posted by 빠담아빠다 2016. 3. 10. 16:46

use Data::Dumper;

   my $foo = "a:b:c:d:a";

   my $bar = "a:b:c:d:z";

   my $hoh = {};

   sub createHash {

      my ($hoh,$str_orig,$str_rest,$lastkey,$parent) = @_;

      $str_rest = $str_rest || $str_orig || "";

      $_        = $str_rest;

      if (/^(.*?):(.*)$/)

      { 

         $parent    = $hoh;

         $hoh->{$1} = $hoh->{$1} || {};

         createHash($hoh->{$1},$str_orig,$2,$1,$parent);

      } 

      elsif (defined($lastkey)) 

      {

         delete($parent->{$lastkey}) if ref $parent->{$lastkey} ne "ARRAY";

         push (@{$parent->{$lastkey}} , [$str_rest,$str_orig]);

      }

      return $hoh;

   }

   $hoh = createHash($hoh,$foo);

   $hoh = createHash($hoh,$bar);

   print Dumper($hoh);

posted by 빠담아빠다 2016. 3. 10. 16:45

####

* update 는 do를 쓴다


use DBI;
BEGIN
{
  $ENV{ORACLE_HOME} ='/oracle/product/11.2.0/db_1';
  $ENV{TWO_TASK} = 'tnsnames';
  $ENV{NLS_LANG} = 'KOREAN_KOREA.UTF8';
}

$dbh = DBI->connect('dbi:Oracle:','abc@orcl','abc',{AutoCommit =>1});
do config;
$rc = $dbh->ping;
    open(UPDB, "$w_file");
  while (<UPDB>){
        $updb_line=$_;
        @updb_values=split /,/,$updb_line;

print "Step 1\n";

    print "UPDATE job_info_new_sec SET swpend='$updb_values[1]' , hwpend='$updb_values[2]' where jobid='$updb_values[0]'\n";
    $dbh->do("UPDATE job_info_new_sec SET swpend=$updb_values[1] , hwpend=$updb_values[2] where jobid='$updb_values[0]'");
print "Step 2\n";


  }
close(UPDB);

close(fileHandle);
$dbh->disconnect; 


posted by 빠담아빠다 2016. 3. 10. 16:44

#!/usr/bin/perl

use strict;
use warnings;

use Time::Local;
use POSIX qw/strftime/;

my ($tstr,$time,@tval);

$tstr = "20130305";

@tval = ( $tstr =~ m|(\d{4})(\d{2})(\d{2})| );

$time = timelocal( 0, 0, 0, $tval[2], $tval[1] - 1, $tval[0] );
print strftime( "%Y%m%d", localtime( $time + 24 * 3600 ) ), "\n";

 

$tstr = "02/28/2004";

@tval = ( $tstr =~ m|(\d{2})/(\d{2})/(\d{4})| );

$time = timelocal( 0, 0, 0, $tval[1], $tval[0] - 1, $tval[2] );
print strftime( "%m/%d/%Y", localtime( $time + 24 * 3600 ) ), "\n"; 

'Language > Perl' 카테고리의 다른 글

[perl] hash of hash  (0) 2016.03.10
[perl] update 쿼리  (0) 2016.03.10
[Perl] 날짜구하기 'linux command line'  (0) 2016.03.06
[Perl] 작성한 파일 compile  (0) 2016.03.06
[perl] 파일 비교후 분류.  (0) 2016.03.06
posted by 빠담아빠다 2016. 3. 6. 01:20
2015/01/13 14:25 이전자료


[root@devdb cron]# date -d '1 day ago' +%Y%m%d%H%M
201501121420



  1. date -d 'yesterday' # 어제
  2. date -d '1 day ago' # 1일전 = 어제
  3. date -d '2 day ago' # 2일전
  4. date -d '35 day ago' # 20일전
  5. date -d '1 week ago' # 1주일전
  6. date -d '2 month ago' # 1달전
  7. date -d '3 year ago' # 3년전
  8. date -d '10 second ago' # 10초전
  9. date -d '20 minute ago' # 20분전
  10. date -d '30 hour ago' # 30시간전
  11. date -d '3 year 7 month ago' # 3년 7개월전



퍼옴 

http://steadypost.net/post/qna/id/8/

posted by 빠담아빠다 2016. 3. 6. 01:18

2014/11/10 09/59 이전자료


perl compiler PAR PACKER

cpan에 간다.

par packer 검색해서

간단한 파일만 받는다.

PAR-Packer-1.014.tar.gz


tar.gz 풀고

Perl Makefile.PL

make

make test

make install


하고

pp -o a.exe a.pl

해보면

Module/ScanDeps가 필요하단다


cpan에간다

Module scandeps검색


Module-ScanDeps-1.10.tar.gz


받고 tar.gz 푼뒤

Perl Makefile.PL

make

make test

make install


하고

pp -o a.exe a.pl

하면 a.exe 파일이 생긴다.


perl compile

pp -o a.exe a.pl


a.pl이라는 파일을 a.exe로  컴파일 ..





----------------------------------------------------------

방문자 덧글

  1. perler 2014.11.11 10:53  댓글주소 수정/삭제 댓글쓰기

    tar ball 받아서 풀고 할필요없이
    명령행에서 cpan 명령써서
    cpan PAR::Packer
    라고 입력하면 의존성있는 모듈 다 알아서 깔아줍니다.


posted by 빠담아빠다 2016. 3. 6. 01:16

배열비교


두개의 파일을 읽어 비교.

1. 배열에는 비교당할 list 예를들어 기존파일 A와 새로운파일 B가 있을때 A의 내용이 B에 있는지 확인 할 때.

 A는 기준점이되고 B는 비교점이 된다.

 # B를 읽고 배열에 넣은 후 foreach문으로 해도 상관없다.


파일 읽고 비교후 정리

배열 @arr




-------------




open(AAA,"./small");

while(<AAA>){

chomp;

 push(@arr,$_);

}


if (-f "./exist"){ `rm -f ./exist`; }

if (-f "./not_exist"){ `rm -f ./not_exist`; }


open(AAA,"./big");

while(<AAA>){

chomp;

 $line=$_;


  if ( grep { $_ eq $line } @arr ) {  # 현재 $line의 값이 @arr에 존재 하는지 비교하는 구문

   `echo $line >> ./exist`;

  }else{

   `echo $line >> ./not_exist`;

  }

}