ブックマーク / okwave.jp (26)

  • Perl 高速でファイルを結合させたい - OKWAVE

    ある集計データを作成しているのですが、 とにかく遅いです。 下記のソースで、繰り返しファイルをオープンさせ 結合を繰り返しているからでしょうが これを早くするにはどうすればいでしょうか? ※やりたいことは実際はできております。 まず条件として ディレクトリのデータは数年分あり 今回は、4年分の統計を取りたい。 →2018年度、2017年度、2016年度、2015年度 ディレクトリのファイルの数、ファイルの名前は一緒(例は数字ですが、基名前です) →ファイルの数は15個 →ファイル容量 大きいので1500kbの約2万行 少ないので600kbほど 合計ファイル容量1年分→1mbほど 4年分になると4mb(単純計算) 平均ファイル容量750kbほど my @DATAFILE; my @FILENAME = ("T1","T2","T3","T4","T5","T6","T7","T8","T9

    Perl 高速でファイルを結合させたい - OKWAVE
    perlcodesample
    perlcodesample 2018/08/06
    [perl[
  • さくらインターネット sendmail - OKWAVE

    No4のお礼というか補足、確認しました。 なるほど。 Fromアドレスをソース内で $from = "xxx@xxx.com"; で決め打ちされてういますが、 これをダブルクォートで囲んでいるので、これだと @xxxを配列表記と認識して、実際は@xxxという配列がないので $from = "xxx.com"; を代入しているのと同等になります。 それで、sendmailが、自ホストのドメインを自動で補完しているのでしょう。 なので、ここをシングルクォートにして $from = 'xxx@xxx.com'; で、解決すると思われます。 $to もソース内に決め打ちにするなら同じくです。

    さくらインターネット sendmail - OKWAVE
  • Perlのループ変数の保持方法について - OKWAVE

    Whileループ内で行われるforループの中でカウンタ変数を使用し、ループ回数を計測しています。しかし、forループを抜けるとカウンタ変数の値がリセットされてしまいます。 While文のループのなかにfor文でループをまわしているスクリプトなのですが、 forの中でカウンタ変数をつくり、ループ回数を計測しております。 またforの中である条件を満たした際に、lastでforを抜け、引き続きWhileのループを継続するという処理をしております。 $i=0; While(○○){ 処理1 for(××){ 処理2 $i++; if($i >=100){ 処理3 last; } } } ここで、一度for文のif文で一度forループを抜け、Whileでループをし、またforループに突入した際に、前回forループでカウントした$iの値を保持したまま、そのつづきから$iのカウンタを動作させたいのです

    Perlのループ変数の保持方法について - OKWAVE
  • Base64での送信でタイトルが環境により文字化け - OKWAVE

    CGI(Perl)のメールフォームで、 Base64エンコードでメール送信をするときに、 特定の文字列の組み合わせをエンコードしたものが、 環境によりタイトルだけ文字化けする現象が発生します。 GmailとWindowsメールで文字化けし、 Thunderbirdだと文字化けしないのですが、 原因と対応がわかる方がいれば教示いただけませんか。 Shift_JISの5Cなどとは根的に異なりそうですが・・・ 以下、いくつかテストした文字列です。 「XXX」お問い合わせを受け付けました ↓ Subject: =?iso-2022-jp?B?44CMWFhY44CN44GK5ZWP44GE5ZCI44KP44Gb44KS5Y+X44GR5LuY44GR44G+44GX44Gf?= Gmail:文字化け Windowsメール:文字化け Thunderbird:文字化けせず お問い合わせを受け付けま

    Base64での送信でタイトルが環境により文字化け - OKWAVE
  • Perlでサイト情報取得時の速度向上方法 - OKWAVE

    Perlを使用してサイトの情報を取得する際に、正規表現を使った一部抜粋と保存が遅くなっている問題があります。 あるサイトの情報を取得するのに ソースを組んで、なんとかできたのですが、 時間がかかってる気がします。 ページ数 約300ページくらい読み込んでいて その中でも、 250ページほど、正規表現で、一部抜粋し、保存させているのですが、 ここが遅いです。 保存した容量は、 1個につき2kb~20kb 平均8kbほど 下記のような、ソースの箇所が明らかに遅い気がします。 my @words; while ($content =~ m#<td.*?>(.+?)</td>#gs) { my $word = $1; $word =~ s/<.+?>//g; $word =~ s/(\r|\n)+/\,/g; $word =~ s/,+//g; for( my $year=2010; $year<

    Perlでサイト情報取得時の速度向上方法 - OKWAVE
  • Perl MSSQLに接続してSQLのVer情報を - OKWAVE

    すみません。素人です。 Perl MSSQLに接続してSQLのバージョン情報を取得したいです。 コードを実行すると下のようなエラーが発生します。 Can't use string ("1") as a HASH ref while "strict refs" in use at C:\testPerl\test.pl SQLServer Mangement Studioでクエリー(select @@VERSION)を実行すると下のような情報を取得できます。 ******** (列名なし) Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86) Jul 9 2008 14:43:34 Copyright (c) 1988-2008 Microsoft Corporation Workgroup Edition on Windows

    Perl MSSQLに接続してSQLのVer情報を - OKWAVE
  • Perl 単回帰分析 - OKWAVE

    テキストファイルで 「text.txt」 2012,,,10 2013,,,12 2014,,,15 2015,,,16 2016,,,8 このような内容で、 2017の5列目の単回帰分析を求めるには、 Perlでは、どのようにするのでしょうか? エクセルの関数では、12.2となりました。 説明が、わかりづらいかと思いますが、どうかよろしくお願いいたします。

    Perl 単回帰分析 - OKWAVE
  • Perl テキスト修正・訂正について - Perl | 【OKWAVE】

  • Perlのページフォーム入力でNOを書き込む方法は? - OKWAVE

    Perl初心者です。ご教示お願い致します;; ~text.txt~ 3,name,text 2,あ,あ 1,あ,あ 上記のようなテキストファイルがあり、 my $NAME = $form->param('name'); my $TEXT = $form->param('text'); unshift(@DATA,"$NO,$NAME,$TEXT\n"); と、略してますが、 NAMEとTEXTは、ページフォーム内のテキストを入力で CGI.pmを使用し、入力することはできました。 そこで、NOなのですが、次回入力する際、「4」と テキストファイルの1行目の1列目に+1した数字を 書き込むようにしたいのですが、 どのようにすればいいでしょうか? my $NO = $ここに1行目の1列目の数字 + 1; これを,unshiftの前に入れるまではわかるのですが、 「$ここに1行目の1列目の数字」

    Perlのページフォーム入力でNOを書き込む方法は? - OKWAVE
  • C言語の文字マクロ部分についての疑問 - OKWAVE

    ●__MINGW32__とは何か? ターゲットがMinGWの時に定義されるマクロ。 MinGWが何者かは↓あたりを参照 http://ja.wikipedia.org/wiki/MinGW ●#if (defined(_WIN32) || defined(_WIN64)) && !defined(__MINGW32__)のところで、なぜ||と&&を併用しているのか。&& !defined(__MINGW32__)がどうして必要なのか? ||や&&は C自体でも使われている論理演算子です。この意味はよろしいですか? MinGWで使われる gcc と、標準的にWindowsで使われる Visual C++とでは、細かい点で使用がことなります。 ターゲットがWindowsであることを示す _WIN32や_WIN64だけでは、この二つの区別ができません。 この行は「32bit Windowsか64

    C言語の文字マクロ部分についての疑問 - OKWAVE
  • 処理が異常に遅い原因はわかりますか? - OKWAVE

    No.5の補足です。 各CPU向けの最適化について、VC++10のmemcpyについて言えば CPUがSSE2をサポートしており、コピー元とコピー先のメモリアライメントが 16バイトで揃っていればSSE命令を利用し、それ以外でもストリング命令による コピーが行われるなど単純にジャンプ命令でループしながらコピーするよりも 高速にメモリ転送が行われるように出来ています。 私の環境ではSSE2を使っても使わなくても0.5秒以下くらいでした。 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; CopyUp: ; ; First, see if we can use a "fast" copy SSE2 routine ; block size greater than min thre

    処理が異常に遅い原因はわかりますか? - OKWAVE
  • ループ変数の変更 - OKWAVE

    GUCIと申します。 ループ変数の変更は、元の値を変えてしまうのでしたっけ? 元を変えずに変更したい場合に、 my $data_tmp = $data; $data_tmp =~ s/^0+//; としないといけないなんて。 らくだ読んでも解りませんでした。 どなたか、解説お願いします。 C:\>type T1.pl #!Perl use strict; my @data = qw(001 002 003); print "S1: data is @data\n"; for my $data (@data) { $data =~ s/^0+//; } print "S2: data is @data\n"; __END__ C:\>T1.pl S1: data is 001 002 003 S2: data is 1 2 3

    ループ変数の変更 - OKWAVE
  • トリッププログラム!? - OKWAVE

    7桁の数字が,A~Z・a~z・0~9で構成された9桁の文字列になるとき,3103364はどうなるでしょうか。 3181008は0c8DgWWOz,3854944は0eJ9w3vyzになります。 お願いします! 【参考】(トリッププログラム) $tripkey = "#istrip"; #文字列 $tripkey = substr($tripkey,1); $salt = substr($tripkey.'H.',1,2); $salt =~ s/^.-z/./go; $salt =~ tr/:;<=>?@\^_`/ABCDEFGabcdef/; $trip = crypt($tripkey,$salt); $trip = substr($trip,-9); $trip = '◆'.$trip; print "$trip";

    トリッププログラム!? - OKWAVE
  • UTF8でperlスクリプトを書くと年月日が表示しない - OKWAVE

    UTF-8で下記スクリプトを書いて実行すると、 $yy年$mo月$dd日 にあたる部分が表示されず、($day)$hh:$mm:$ss の部分しか表示されません。 ------------------------------------ #!/usr/bin/perl use utf8; use Encode; &get_date(); print "Content-type: text/html\;charset=utf-8\n\n"; print encode('utf8',"$date"); exit; sub get_date { ($ss,$mm,$hh,$dd,$mo,$yy,$day)= localtime(time); $day = ("日","月","火","水","木","金","土")[$day]; $yy = $yy+1900; $mo++; if ( $mo <

    UTF8でperlスクリプトを書くと年月日が表示しない - OKWAVE
    perlcodesample
    perlcodesample 2014/04/10
    Perlで日本語を扱うときは必ず「use utf8」はするようにしたほうがよい。
  • SVG変換について - OKWAVE

    SVGをPNGやJPGに変換するperlモジュールはあるでしょうか? また、これに関するサイトや書籍等の情報でも構いません。 宜しくお願い致します。

    SVG変換について - OKWAVE
  • 民事訴訟の擬制陳述とは?簡易裁判所から地方裁判所への移送申立ての有利性 - OKWAVE

    事案がよくわかりませんので、一般的な事を書きます。 1:上にも書いてあるとおり、相手方の弁護士は、請求内容が簡単な内容ではないので、事前に争う場所を決めてから審理しようとしているのです。簡易裁判所ですと、その場で証拠を調べたり、主張したりして判決を出すのですが、その様な審理方法では無理だと言っているわけです。 地方裁判所での審理になりますと、事前に準備書面を提出して、弁論手続きをしてから、口頭弁論となります。そのような事前に書面を準備して、準備手続をして、立証していくというのは素人にはなかなか難しい話です。 2:陳述擬制というのは、裁判所に出頭しなくても書面を出していれば、書面に記載した事項と主張したものとみなす事を言います。 裁判期日に欠席すると、相手方の主張する内容について全て認めたものとみなされ、原告の請求の認容判決がされる事があります。よって、来は否認するのであれば必ず出席しなく

    民事訴訟の擬制陳述とは?簡易裁判所から地方裁判所への移送申立ての有利性 - OKWAVE
  • CGIでメール送信で件名文字化け - OKWAVE

    Lite.pmを使ったメールで文字化け 海外製のプログラムを日語対応に修正しているのですが「~」が文字化け(?)になります。 下記がコードの一部を抜粋したものです。 $message=jcode($message)->sjis; my $msg = MIME::Lite->new( Type =>'multipart/mixed', From =>$fromaddr, To =>"$to", Subject =>"$subject", Type => "text/plain; charset=\"iso-2022-jp\"", Data =>"$message" ); 「~」だけが文字化けします。 下記のように文字コードを UTF-8 にすると文字化けしませんが、 メールで UTF-8 を使うのは良くないのでしょうか。 $message=jcode($message)->utf8; my

    CGIでメール送信で件名文字化け - OKWAVE
    perlcodesample
    perlcodesample 2013/12/17
    “MIME-Version”
  • Perl中で teeを使っても戻り値を得たい - OKWAVE

    例えば make compile |& tee log とすると、tee のせいでmake の戻り値が得られないということに関しての相談です。 いま、perlの中で、 > $cmd = "$make compile 2>&1| tee compile.log"; > $rval = system($cmd); > if($rval){ print "Error\n"} のような使い方をしています(実際は$rval >>8 とする必要があるようです)。 上記のようにログを端末に表示し、ファイルにも落とし、かつ戻り値も利用したい、という場合、どのようにしたらよいのでしょうか。 # BASHでは echo ${PIPESTATUS[0]} で得られる、 # Perl のTee Moduleがあるなどの情報だけは発見できたのですが。。。 宜しくお願い致します。

    Perl中で teeを使っても戻り値を得たい - OKWAVE
  • [Perl]ファイル出力のエンコード(EUC、SJIS、UTF8)を指定したい - OKWAVE

    以下のサンプルは、コードをUTF-8 で記述して、標準出力をシフトJISで出力し、EUC-JPでファイルから入力します。 "<:encoding(euc-jp)" は、PerlIO レイヤの指定で、これを変えれば、ファイル出力を任意の文字コードにできます。 binmode STDOUT, ":encoding(euc-jp)"; のような指定もできます。 ---------------------------------------------------------------- use encoding "UTF-8", STDOUT => "Shift_JIS"; open(FH, "<:encoding(euc-jp)", "EUC.txt"); while(<FH>){ print ; } close(FH);

    [Perl]ファイル出力のエンコード(EUC、SJIS、UTF8)を指定したい - OKWAVE
    perlcodesample
    perlcodesample 2013/11/08
    “use encoding”はよくないなぁ。utf8プラグマとEncodeモジュールを使おう。
  • PerlやCGIはそれほど進化していない? - OKWAVE

    Perlは2002年に5.8が、2007年に5.10、2010年に5.12、2011年に5.14と どんどん新しくなってはいるのですが、 出回っている情報に古い物が混じっているで注意が必要です。 互換性は重視されているので、古い書き方でも動いたりはしますが、 推奨されなくなった物にはそれなりの理由があります。 あまり古い書き方は避けた方が良いです。 新しめの情報は、とりあえず「モダンperl」とかで検索すればよいかな。 ただ、レンタルサーバーとかだとバージョンアップして無くて 最新のperlは使えないこともあると思います。 (さすがにPerl5.8くらいは使えるところがほとんどだと思いますが) CGIはWebサーバーから外部プログラムを呼び出す仕組みのことで プログラミングするだけならそれ自体を勉強する必要ってあまりない気がしますが。

    PerlやCGIはそれほど進化していない? - OKWAVE