投稿

ラベル(perl)が付いた投稿を表示しています

perl URL取得

Quick Edit Pencil

自CGIのURLのパス部分を取得する方法 | PerlのQ&A【OKWave】

my $path=(lc(($ENV{SERVER_PROTOCOL}=~m|(\w*)/?|)[0])||"http")."://".$ENV{SERVER_NAME}.($ENV{SERVER_PORT}!=80?":".$ENV{SERVER_PORT}:"").substr $ENV{SCRIPT_NAME},0,rindex($ENV{SCRIPT_NAME},'/')+1;

perl 正規表現で末尾から文字列出現回数指定

Quick Edit Pencil

正規表現で3回目の単語の後に文字を入れたい - PHP - 教えて!goo

<?php
$str=<<<eof
<p>昔むかし、あるところに</p>
<p>おじいさんと</p>
<p>おばあさんが</p>
<p>住んでいました。</p>
eof;
$pattern="/(.+?<\/p>){3}/s";
$replacement="$0文字";
$str=preg_replace($pattern,$replacement,$str);
print htmlspecialchars($str);
?>

4-31 行末から左に数えて3番目のabcを検索

 

対象データ

 

abc11abc22abc33abc44abc55abc66
abcabcabc
abc11abc
abcabc22abc
abXabcbcabcabc
abcabcabcabcabc

 


 

正規表現

 

abc(?=(((?!abc).)*abc){2}((?!abc).)*$)

別解

abc(?=(.*abc){2})(?!(.*abc){3})



perl クッキー 日時

Quick Edit Pencil

 

$expires = makeexpiresdate(1);


sub makeexpiresdate
{
local $delta;
local ($gmt, @t, @m, @w);

$delta = $_[0];

@t = gmtime(time() + $delta*60*60*24);
@m = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
@w = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');

$gmt = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT",
$w[$t[6]], $t[3], $m[$t[4]], $t[5]+1900, $t[2], $t[1], $t[0]);

return $gmt;
}

perl 置換リスト 配列

Quick Edit Pencil

our @WORDS = (

[$triggerWord,''],

['^.*?id="layout-css|options-css|theme-css|page-css" />','<op> -d'],

['id="script-js"></script>','<op> -d -setStart -JS'],

['</script>','<op> -d -setEnd -JS'],

['id="bind-tag-cleaner-config-js">','<op> -d -setEnd'],

['</script>','<op> -d -setEnd -JS'],

['</script>','<op> -d -setEnd -JS']

);

第12回 2次元配列 - bingo_nakanishiの他言語出身者のためのPerl入門

se strict;
use Data::Dumper;

# 1次元配列
my @c = ('a', 'b', 'c');
my @d = ('e', 'f', 'g');
my @e = ('h', 'i', 'j', 'k', 'l');


# リファレンスで持たせるんだ!!!!
my @f = (
         \@c,
         \@d,
         \@e
        );

print Dumper \@f;

結果:

$VAR1 = [
          [
            'a',
            'b',
            'c'
          ],
          [
            'e',
            'f',
            'g'
          ],
          [
            'h',
            'i',
            'j',
            'k',
            'l'
          ]
        ];

Perl 何かのエラー?

Quick Edit Pencil

#-- 置換リスト検証 --#
# エラー:番号0060
if($after =~ m/-setEnd/ && $skipPair != $i){die print $PRINTHEADER . "! BiND Tag Cleaner CGI エラー 番号: 0060!".($i)."<br>複数行削除のペアリング異常<br>サイト管理者に連絡してください";}

perl html エスケープ

Quick Edit Pencil

さぼてん: 【Perl】HTML エスケープとXSS対策

# HTML
my $html = qq|<script language="JavaScript">alert('にょろ');</script>\n|;

# 関数 xss()
print xss($html);

sub xss {
my $str = shift || return(undef);
$str =~ s/&/&amp;/g;
$str =~ s/</&lt;/g;
$str =~ s/>/&gt;/g;
$str =~ s/\"/&quot;/g;
$str =~ s/\'/&#39;/g; return($str);
}

perl 環境に依存しないで末尾の改行を削除

Quick Edit Pencil

chomp - 末尾の改行の削除 - サンプルコードによるPerl入門

# 環境に依存しないで末尾の改行を削除
$string =~ s/\x0D?\x0A?$//;

Perl 危険な関数

Quick Edit Pencil

4-2. Perl の危険な関数

perl 行内を文字検索

Quick Edit Pencil

Perlでテキストファイル内の検索文字列がある行数を求めるには - 燈明日記

◆サンプル

use strict;
use warnings;
use utf8;
binmode STDOUT, ':encoding(shiftjis)';

my $strText = << "END_OF_TEXT";
1234567890
ABCDEFGHIJ
1234567890
ABCDEFGHIJ
12小池啓仁AB
1234567890
ABCDEFGHIJ
END_OF_TEXT

my $linecnt;

if ($strText =~ /小池啓仁/) {
   $linecnt = scalar(() = ($` =~ /\n/g)) + 1;
   print "検索文字『小池啓仁』にヒットした行数:$linecnt\n";
}

perl 配列内を文字検索

Quick Edit Pencil

[perl] 配列から条件にマッチする要素を取り出す

 配列から条件にマッチする要素を取り出す

「配列の要素を検索しある条件にマッチする要素だけ取り出す」こんな時に先ず思い浮かぶのが、配列全ての要素を順に見ていき、条件にマッチする要素を退避しておく等の方法が考えられます。

 

しかし こんなに煩わしい事をしなくても、perlでは grepという 関数を使用すれば、配列の中からある条件にマッチする要素だけを取得する事が出来ます。 非常に便利なものです。



grep は、第一引数で正規表現を使用して条件を指定し、 第二引数で検索対象となる配列を指定します。 戻り値としてリスト値を指定すればマッチした全ての要素が、スカラ値を指定すればマッチした件数を取得する事が出来ます。



[数値を含む要素のみ取り出す]

@array = ('win95', 'win98', 'win2000', winXP,'mac', 'linux');

@grepedarray = grep(/\d/,@array); 

# ('win95', 'win98', 'win2000')  が取り出される 




[winから始まる要素を取り出す]

@array = ('win95', 'win98', 'win2000', winXP, 'mac', 'linux');

@grepedarray = grep(/^win/,@array); 

# ('win95', 'win98', 'win2000', winXP)  が取り出される 




[winから始まる要素の件数をカウント]

@array = ('win95', 'win98', 'win2000', winXP, 'mac', 'linux');

$cnt = grep(/^win/,@array); 

# 4  が返される 

perl 入門 require

Quick Edit Pencil

use strict;を外す

useとrequireでエラー - Perl - 教えて!goo

my は our

perl 入門 存在確認

Quick Edit Pencil

-e
ファイル存在確認 

-d
ディレクトリ存在確認 

-f
ファイル存在確認 

perl 入門 use strict;とは use warnings;とは

Quick Edit Pencil

test-use-xxx-cgi-script-debug.cgi

#!/usr/bin/perl

### use strict;とは use warnings;とは

#Perl5編 第5章 安全なスクリプトを書く
#http://www.geocities.jp/ky_webid/perl5/005.html

### スクリプトエラー AddHandler cgi-script-debug .cgi

#[perlメモ]XREA系サーバでperlのCGIを動かす時の注意点
#http://blog.kumacchi.com/2009/12/perlxreaperlcgi.html

use strict;
use warnings;
use utf8 ();

print "Content-type: text/html; charset=UTF-8\n\n";
my $num = 100;
print "$num\n";

perl 入門 use utf8;とは

Quick Edit Pencil

#!/usr/bin/perl

#Perlの「use utf8;」
#http://ash.roova.jp/cipher/2010/04/perluse-utf8.html

use utf8;
binmode(STDOUT, ":utf8");

#Perlのuse utf8のメモ - CGIのutf-8改造で文字化けしたときの処方箋
#http://my.xrea.cc/data/pc/perl_use_utf8.html

print "Content-type: text/html; charset=UTF-8;\n\n";

my $string = "検索対象の文字列です。";

if ($string =~ /文.列/) {
print "Match!";
} else {
print "Not Match!";
}

print "こんにちは!\n";

#Perl 5.8.x Unicode関連
#http://www.rwds.net/kuroita/program/Perl_unicode.html#utf8

my $unicode = "\x{0x3b1}";
if(utf8::is_utf8($unicode)){print "bingo";}else{print "not bingo";}

#utf8::decode(@lines);
#my $unicode = @lines;
#if(utf8::is_utf8($unicode)){print "bingo";}else{print "not bingo";}