Sorauta-Utility

 view release on metacpan or  search on metacpan

lib/Sorauta/Utility.pm  view on Meta::CPAN

    month => $month + 1,
    day   => $day,
    hour  => $hour,
    min   => $min,
    sec   => $sec,
  };
}

#==========================================
# http経由で取得した時間からエポックタイムを抽出
# req:
#   date_str: httpリクエストのヘッダにあるlast-modified等
#     ex)"Fri, 13 Jan 2012 23:49:21 GMT"
# res:
#   unix_time: エポックタイム
#==========================================
sub get_epoch_from_formated_http {
  my(@MoY, %MoY);
  @MoY = qw(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
  @MoY{@MoY} = (1..12);

  if ($_[0] =~ /^
    [SMTWF][a-z][a-z],
    \ (\d\d)
    \ ([JFMAJSOND][a-z][a-z])
    \ (\d\d\d\d)
    \ (\d\d):(\d\d):(\d\d)
    \ GMT$/x) {
    return timegm($6, $5, $4, $1, $MoY{$2} - 1, $3 - 1900);
  }
}

#==========================================
# パスを配列で表現したものから文字列のパスを作る
# req:
#   path_list: ('/Users', 'user', 'Desktop', 'Hoge.txt')
# res:
#   path_str: '/Users/user/Desktop/Hoge.txt'
#==========================================
sub cat {
  #return join('/', @_);
  return File::Spec->catfile(@_);
}

#==========================================
# 隠しファイルか判定
#   is_skip_file
# req:
#   file_path: ファイルまでのパス
#       ex) /Users/user/Desktop/.svn
# res:
#   result: 隠しファイルの場合は1、それ以外は0
#==========================================
sub is_hidden_file {
  my $file_path = shift;

  return 1 if(
    $file_path eq '.'  ||
    $file_path eq '..' ||
    $file_path =~ /.svn$/ ||
    $file_path =~ /desktop\.ini$/ ||
    $file_path =~ /.DS_Store$/ ||
    $file_path =~ /Thumbs\.db$/
  );

  return 0;
}

#------------------------------------------
# コピー不要なファイルか
#   copy_filter
# req:
#   file_name: ファイル名
#     ex).svn, desktop.ini
# res:
#   result: コピーすべきファイルの場合は0、それ以外は1
#------------------------------------------
sub is_unnecessary_copying_file {
  my $file_name = shift;

  # .や..等,階層を指定している場合は無視
  if ($file_name =~ /^\./) {
    return 1;
  }
  # サムネイル用ファイルなどは無視
  if ($file_name eq 'Thumbs.db' || !($file_name =~ /[^\.]/)) {
    return 1;
  }
  # .svnはコピーしたくない
  if ($file_name eq '.svn' || $file_name eq 'desktop.ini' || $file_name eq '.DS_Store') {
    return 1;
  }

  # ログファイルのディレクトリは無視
  if ($file_name eq 'log') {
    return 1;
  }

  return 0;
}

1;
__END__
# Below is stub documentation for your module. You'd better edit it!

=head1 NAME

Sorauta::Utility - useful sub routeans

=head1 SYNOPSIS

  use Sorauta::Utility;

1.get_from_http
  $url = "http://google.com/";

  # HTTP::Response instance
  my $result = get_from_http($url);

2.save_file
  my $path = "sample.txt";
  my $content = "hoge fuga piyo";
  # if error has occures, return 2(or 0)
  save_file($path, $content);

3.create_get_url
  my $url = "http://google.com/";
  my $params = { id => 1, name => "sample" };

  # return "http://google.com/?name=sample&id=1&"
  my $result = create_get_url($url, $params);

4.get_timestamp
  # return "2012/01/25 15:02:14"
  my $result = get_timestamp(1327471334);

5.get_date
  # return { year => 1, month => 1, dat => 2, hour => 1, min => 1, sec => 1 };
  my $data_obj = get_date();

6.get_epoch_from_formated_http
  # return 1326498561
  my $result = get_epoch_from_formated_http("Fri, 13 Jan 2012 23:49:21 GMT");

7.cat
  my @path_list = ('/Users', 'user', 'Desktop', 'Hoge.txt');

  # return "/Users/user/Desktop/Hoge.txt"
  my $result = cat(@path_list);



( run in 1.278 second using v1.01-cache-2.11-cpan-39bf76dae61 )