Skip to main content

perl

リストの内容だけ繰り返す

#! /usr/bin/perl

@list = (' item1 ', ' item2 ');

foreach $val (@list) {
  s/ //g;
  print "$val\n";
}

リストの内容だけ繰り返す(特殊変数を使用)

#! /usr/bin/perl

@list = (' item1 ', ' item2 ');

foreach (@list) {
  s/ //g;
  print "$_\n";
}

#! /usr/bin/perl

@list = ('item1', 'item2');
myfunction(@list);

sub myfunction {
  foreach ( @_ ) {
    print "$_\n";
  }
}

標準入力から入ったものをそのまま出力1

#! /usr/bin/perl

foreach (<>) {
  print $_;
}

while

while (<>) {
  s/[\r\n]//g;                  # 改行コードを除去。
  next if ( $_ eq "" );         # 空行ならスキップ
  next if ( /^#/ );             # コメント行はスキップ
  my ($var1, $var2) = split( /\s+/, $_);
  :
}

ファイルハンドラ

#!/usr/bin/perl

$filename = "filename.txt";

open(my $fh, "<", $filename) 
  or die "cannot open < ".$filename.": $!";

while ( <$fh> ) {
  s/[\r\n]//g;                  # 改行コードを除去。
  next if ( $_ eq "" );         # 空行ならスキップ
  next if ( /^\s*#/ );          # コメント行ならスキップ

  :
  :

 }

close($fh)
  or warn "close failed: $!";;

引数の利用

#! /usr/bin/perl

my $count = @ARGV;
if ( $count == 0 ) {
  print "引数がないっす";
}

foreach (@ARGV) {
  print "$_\n";
}

オプションと引数

#! /usr/bin/perl

use Getopt::Std;

my $flg=0;
getopts("f:tdh", \%opts);

if ($opts{'f'}) {
  $flg = $flg + 1;
  print $opts{f};
  print "\n";
}
if ($opts{'t'}) {
  $flg = $flg + 2;
}
if ($opts{'d'}) {
  $flg = $flg + 4;
}
usage() if ($opts{'h'}) ;

print "$flg\n";

my $count = @ARGV;
print "$count\n";
foreach (@ARGV) {
  print "$_\n";
}

sub usage {
  print "help message...\n";
}

http

#!/usr/bin/perl

use LWP::UserAgent;
use HTTP::Request;
use HTTP::Response;

$url='http://xxx.xxx.xxx.xxx/xxx.html';

my $proxy = new LWP::UserAgent;
my $req = HTTP::Request->new('GET' => $URL);
my $res = $proxy->request($req);

$source = $res->content;
$source =~ s/<.*?>//g;

日付について1

#! /usr/bin/perl

my @week = qw(Sun Mon Tue Wed Thu Fri Sat);
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime();
#my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());

$year = $year + 1900;
$mon  = $mon + 1;
$yday = $yday + 1;

print "$year-$mon-$mday $hour:$min:$sec\n";
print "$year-D$yday $week[$wday]\n";
if ( $isdst ) { print "summer time\n"; }

日付について2

#! /usr/bin/perl

use POSIX;

my $isleap = 0;
my @mdays  = (31,28,31,30,31,30,31,31,30,31,30,31);
my $ydays;
my $message;

my ( $year, $month, $day, $dow, $downum, $doy, $woy ) = split( /\,/, strftime( "%Y,%m,%d,%A,%w,%j,%W", localtime() ) );

if ( ( $year % 4 ) == 0 ) {
  if ( ( ($year % 100) != 0 ) || ( ($year % 400) == 0 ) ) {
    $isleap = 1;
    $mdays[1] = 29;
  }
}

$ydays  += $_ for @mdays;
#$month  += 0;
#$day    += 0;
#$doy    += 0;
#$woy    += 0;

$message = "今日は $year年$month月$day日、第$woy週の$dowです。\n";
if ( $isleap ) { $message = $message."閏年なので"; }
$message = $message."年間日数 $ydays日あるうちの $doy日目です。";

print $message;
exit;

日付について3

#! /usr/bin/perl

use Time::Local;

my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time()+3600);

my $time = timelocal( $sec, $min, $hour, $mday, $mon, $year );

my $string =  localtime($time);

print $string;
exit;