回答数
気になる
-
条件にあてはまる変数を抽出したい
Perl初心者です。お願いいたします。 下記のような動きを実現したいのですが、どのような方法があるでしょうか。 できる限りすっきり書きたいのですが、自分で書きますと全パターンを記述していく・・等しか思いつきませんでした。お分かりになる方お教えいただけますと助かります。 $a1、$a2、$a3、$a4、$a5、$a6の6種類のデータがあり、いずれも「1」または「2」が代入されます。 その時に「1」が代入されたもののうち、aの後ろの数字が大きいほうの変数を抽出したいです。 たとえば、$a1、$a2、$a3、$a4、$a5、$a6 のデータが、1、2、2、1、1、2 であれば、「1」のうち数字が大きいのは$a5 なので $TOP = $a5; 、としたいです。 宜しくお願いします。
質問日時: 2011/12/17 00:48 質問者: kujitan
ベストアンサー
5
0
-
imgタグのクエリストリングを取得する方法
IIS + クラシック asp + ActivePerl 環境下で QR コードを取得するプログラムを作っています。 呼び出し元の asp 内に、 <img src = "./cgi-bin/qr_test.cgi?q=hogehoge"> と書きました。 この q=hogehoge を呼び出し先で取得する方法を教えてください。 ===== 呼び出し元 (qr_test.asp) <html> <head></head> <body> <img src = "./cgi-bin/qr_test.cgi?q=hogehoge"> </body> </html> ===== 呼び出し先 (qr_test.cgi) use strict; use warnings; use GD::Barcode; my $url = $in{'q'}; # ここでエラーが出ます。コメントアウトすると正常に動きます。 my $qrimg = GD::Barcode->new('QRcode',$url,{'Ecc'=>'M',Version=>'7','ModuleSize'=>'4'}); binmode(STDOUT); print "Content-Type: image/jpeg\n\n"; print $qrimg->plot->jpeg; exit(0); ===== バージョンは IIS 7.5 Perl 5.14.2 (64bit) です。 どなたかご教授お願いします。
質問日時: 2011/12/16 16:08 質問者: ab-bz
ベストアンサー
1
0
-
perlでの特定の値抽出について
テキストファイルの中身が divs=SIL,0.070000,-423111.000000/DH,0.400000,-1127673.000000+SIL,0.200000,923920.000000 score=-10487331.000000 acoustic=-10487331.000000 のような形式で10行ほどとなっていた場合に、 SILの-423111と923920の部分、acousticの-10487331の部分を抽出するプログラムを Perlで記述するにはどうすればよいでしょうか。 知識のある方、お願いします。
質問日時: 2011/12/15 16:15 質問者: noname#145267
解決済
1
0
-
perl 正規表現 抽出
perl の正規表現を用いて、文字列の抽出を行いたいのですがどのように 書けばいいのかわかりません。 実現したいことは 「Y:/フォルダ名/フォルダ名/ファイル名.拡張子」 というテキストに対して 「拡張子」のみを抽出することと 「ファイル名」のみを抽出することです。 パターンマッチや変換はなんとなくわかるのですが 抽出の仕方がよくわかりません。 よろしくお願いいたします。
質問日時: 2011/12/11 19:45 質問者: hi_mawa
ベストアンサー
4
0
-
ループ内での後方参照の使用に関して
下記のようなプログラムを作成しました。 (Perl のバージョンは 5.8.8 となります。) for ($i=0; $i<=105; $i++) { $str1 = "str1"; $str2 = "1234567890str1test"; $str2=~ s/^(\d+)($str1)/test/g; print $i."\n"; print $1."\n"; print $2."\n"; print $str2."\n"; } このプログラムを実行しますと、ループが100回実施するまでは $1, $2の値を 取得できるのですが、100回を超えると取得できなくなります。 (上記で行っている置換処理は100回を超えても正常に処理されます。) 質問としましては、この現象は Perl のバグなのでしょうか。 それとも、私の正規表現の書き方に不備があるのでしょうか。 ネットでいろいろ調べてみたのですが、答えが見つからなかったため、 質問させていただきました。 よろしくお願い致します。
質問日時: 2011/12/09 00:02 質問者: eulazaemon
解決済
6
0
-
perl 読込ファイルの分割について
下記のようなファイルがあります。 1234: 4(グループ名: 要素数) AB(要素1) CD(要素2) EFG(要素3) HIJ(要素4) 2345: 1(グループ名: 要素数) XYZ(要素1) ○○: XX ・・・ :の行が区切られる単位とし、:の後の数字がそのグループに入る要素数である。 その要素数毎にファイル分割(要素のみ記述されたファイル)したいです。 perlプログラムで どのように書けば よいのか教えてください。
質問日時: 2011/12/08 21:17 質問者: 1204533
ベストアンサー
1
0
-
連番ごとに印をつける
perlを用いて、1列目の数字が連番じゃなくなったら印をつけたいと思っています。 ---<data.txt>--- 1 A 1 2 2 B 5 2 3 C 2 3 4 D 4 4 10 J 5 10 11 K 6 12 13 M 2 28 ---<result.txt>--- 1 A 1 2 2 B 5 2 3 C 2 3 4 D 4 4 > 10 J 5 10 11 K 6 12 > 13 M 2 28 このようにしたのですが、いい方法はありますか? perl初心者ですがよろしくお願いします。
質問日時: 2011/12/08 17:10 質問者: kjng
解決済
2
0
-
HTML入力フォームの保存
HTMLで入力フォームを作った時にチェックボックスにチェックを入れ送信した後に、またそのHTMLのアンケートフォームを開いた時に初期値として前回送信したチェックが入っているようなプログラムを書きたいのですが、どうすればいいのかわかりません。Perlやhtmlで書きたいと思っているのですが書けますか?? どなたか教えてください!!
質問日時: 2011/12/07 04:52 質問者: endo891113
ベストアンサー
1
0
-
75オクテットごとに改行を入れる方法
初めて質問させて頂きます。 iCalendarのデータを吐き出すプログラムを作成中です。 長い項目に関して、75オクテットごとに改行(CRLF)と半角スペースを入れないといけないのですが、方法がわかりません。なお、文字コードはUTF-8で、全角・半角文字がまじっています。 なお、データ中に\nを含む場合は、それがぶった切られないようにする方法はないでしょうか? 具体例) DESCRIPTION:あいうえおかきくけこさしすせそたちつてとなにぬね\nのはひふへほ ↓ DESCRIPTION:あいうえおかきくけこさしすせそたちつてとなにぬね [半角スペース]\nのはひふへほ ※上記のように75オクテット目の\とnが途中で改行されないこと。
質問日時: 2011/12/06 18:20 質問者: lgh09mm
ベストアンサー
1
0
-
ハッシュの要素を別ファイルに渡すことができますか
perlで次のようなプログラムがあります。 sub { 中略 $USERS{$xy} #$xyは変数 中略 } <form name="user" action="$ENV{'SCRIPT_NAME" method="POST"> ユーザー名:<input type="text" name="username"><br> パスワード:<input type="password" name="pass" value=""><br> <input type="submit" value="ログイン"> ------------- このとき$USERS{$xy} の要素を別ファイルに渡すことができますか。可能ならばどのようにすればよいでしょうか
質問日時: 2011/12/05 20:23 質問者: houseroof
ベストアンサー
1
0
-
数字(小数点付き)の取り出し方
お世話になります。 次のような文字列から「81.59」を数字として取り出したいのですが Perlを始めたばかりで途方に暮れています。 <td bgcolor="#c7c7c7">81.59円</td> 上記から81.59を数字として取り出す方法を教えて頂けませんでしょうか。
質問日時: 2011/12/05 13:51 質問者: miruha2011
ベストアンサー
3
0
-
perlでの、ファイル読み込みについて
perlでの、ファイル読み込みについてお尋ねしたいことがあります。 a b c d e f g h i というような内容のテキストファイルがあったとき、この成分を「○行×列」の個別に読み込みたいのですが、 (C言語でいう、「A[0][0]=a A[0」[1]=b A[0][2]=c A[1][0]=d ・・・のように) どのようにしたらよいのでしょうか? perlに関しては全くの初心者なのですが、どうしてもperlを使わないといけない事情があり、 稚拙な質問かとは思いますが、どうぞよろしくお願いします。
質問日時: 2011/12/04 06:33 質問者: ramusi
ベストアンサー
2
0
-
マッチした行をランダムに3行出力したい
毎度お世話になっております。 今夜も躓いてしまってどうにもならないので、お力をお貸しいただけませんでしょうか。 以下のようなリストファイルがあります。 ------------------ 項目1 項目2 ・・・ ------------------ このリストにマッチした行を、リストの項目ごとにランダムに3行選んで出力したいです。 マッチした行を取り出すところまでは、以下のような形でできたのですが、 ここから先をどのように書けばいいのかわかりません。 ------------------ my $list = 'リストファイル'; open (IN, "$list"); my %l; while(<IN>) { chomp; $l{$_}++; } close IN; while(<DATA>) { my ($xx,$yy) = split(/\t/,$_); if (exists($l{$xx})) { # print; # ここから先がわかりません } } __END__ 項目1 N1 項目1 N2 項目2 N3 項目2 N4 項目2 N5 項目1 N6 項目2 N7 項目2 N8 項目2 N9 項目1 N10 ------------------ 以下のような出力結果にしたいです。 ------------------ 項目1 N2 項目1 N6 項目1 N10 項目2 N3 項目2 N5 項目2 N9 ------------------ どうぞよろしくお願いいたします。
質問日時: 2011/12/04 00:12 質問者: hachibunbunbun
ベストアンサー
3
0
-
Perlでの重複要素カウントについての質問
Perlのデータ処理に関する質問です。 afcb7dc0,"福岡県","天神","福岡県","博多・福岡空港" 09f115fc,"東京都","東急沿線","東京都","東急沿線","東京都","代官山、恵比寿-五反田","東京都","東急沿線","東京都","三田、浜松町-品川","東京都","東急沿線" 3933245b,"東京都","新宿・代々木" ・・・ という形式のCSVファイルがあるときに、これを afcb7dc0,"福岡県",2,"天神",1,"博多・福岡空港",2 09f115fc,"東京都",6,"東急沿線",4,"代官山、恵比寿-五反田",1,"三田、浜松町-品川",1 3933245b,"東京都",1,"新宿・代々木",1 の形式に変換するにはどうすればいいでしょうか? ご教授願います。
質問日時: 2011/12/01 21:42 質問者: primariest
ベストアンサー
2
0
-
他のサーバーにあるファイルの存在確認をしたい
データを取得するため、他のサーバーにあるファイルの存在確認をしたいのですが、どのようにすればいいでしょうか? ファイルは普通に公開されているファイルです 他の方の質問の回答にもあった if(head "$data"){ use LWP::Simple; $content = get($data); } #$dataは別行でURLを指定してます という方法を試したのですがわざと存在しないファイル名を指定したところtrueが返り、ifの中に入っていって存在しないファイルを取得しようとしてgetでエラーになってしまいましたし、存在するファイル名を指定してみてもやはりifの中に入ってそのままデータの取得ができました (ファイルが存在するしないにかかわらずif分岐がtrueになりました) 他に if(-e "$data"){ use LWP::Simple; $content = get($data); } #$dataは別行でURLを指定してます とやってみましたがこれは逆に存在するファイル名をしていても全てifの中に入っていかずfalseが返ってきました なお、確認したいファイルはcsvです
質問日時: 2011/12/01 20:11 質問者: choei
解決済
1
0
-
Perlでhtmlファイルの検索、置換がしたい
Perlを用いて、数百あるhtmlファイルの一括検索&置換作業がしたいです。 作業としては、 1.webに上がっているhtmlファイルを取得してローカルに保存 (完了) 2.meta系テキストの記述 例:<meta property="og:title" content="" /> 3.さきほど保存したファイルの中から、titleタグの中身を取得して変数に格納 例<title>今日の日記</title>の「今日の日記」部分 4.og:titleのcontent要素に格納したデータを記述する 例:<meta property="og:title" content="今日の日記" /> 以上です。 現在1は出来ていて、2も一括置換で可能です。3.4のローカルに保存したhtmlファイルの操作で躓いています。 お分かりの方どうぞよろしくお願いします。
質問日時: 2011/12/01 13:44 質問者: attyonn
ベストアンサー
2
0
-
perl system関数 引数 フォルダ
perlのsystem関数を使って、コマンドを実行したいのですが、 実行ファイルの引数にフォルダを指定すると、うまく動作しません。 以下のように書いています system "実行ファイル フォルダ"; 実行ファイルは .BATファイルで、 指定しているフォルダには複数のテキストファイルが入っています。 perlで書いたcgiファイルは実行ファイルと同じディレクトリにあります。 コマンドからではなく、手動でドラッグ&ドロップすると正常に動作します。 windous7でperlはActivePerlを使用しています。 引数にはフォルダを指定できないのでしょうか? またフォルダを指定できない場合、解決策などはあるのでしょうか? よろしくおねがいいたします。
質問日時: 2011/11/30 10:26 質問者: hi_mawa
ベストアンサー
2
0
-
正規表現 \s が、\n に、ヒットする。
# 正規表現 \s が、\n に、ヒットする。 # # Windows XP(sp3) ActivePerl # # This is perl 5, version 12, subversion 3 (v5.12.3) built for MSWin32-x86-multi-thread # (with 9 registered patches, see perl -V for more detail) # # Copyright 1987-2010, Larry Wall # # Binary build 1204 [294330] provided by ActiveState http://www.ActiveState.com # Built Feb 9 2011 14:38:22 # use strict; use warnings; use utf8; my $a = "\n\n"; $a =~ s/\s/aaaaa\n/ig; print $a; __END__ [出力結果] aaaaa aaaaa
質問日時: 2011/11/29 21:39 質問者: hh77777
ベストアンサー
3
0
-
perl MeCab 和布蕪 エラー
perlで、テキストを形態素解析し、専門用語を抽出するコードを書いています。 Text::MeCab と TermExtract::MeCab; を利用しているのですが、 よくわからないエラーがでます。 以下 ソースとエラー文になります。 <ソース> #! /usr/bin/perl use Text::MeCab; use TermExtract::MeCab; my $text = "私はももが好きです。"; my $mtext = getMecabText($text); sub getMecabText{ my ($text) = shift @_; my @arg = ($0,"Ochasen"); my $mecab = new Text::MeCab::Tagger(\@arg); my $exdata = new TermExtract::MeCab; $text = $mecab->parse($text); return $text; } printKeyWord($mtext); sub printKeyWord{ my ($mtext) = shift @_; my $data = new TermExtract::MeCab; my $output_mode = 1; $data->use_TF; my @noun_list = $data->get_imp_word($mtext,'var'); foreach (@noun_list) { next if $_->[0] =~ /^(昭和)*(平成)*(\d+年)*(\d+月)*(\d+日)*(午前)*(午後)*(\d+時)*(\d+分)*(\d+秒)*$/; next if $_->[0] =~ /^\d+$/; printf "%-60s %16.2f\n", $_->[0], $_->[1] if $output_mode == 1; printf "%s\n", $_->[0] if $output_mode == 2; printf "%s,", $_->[0] if $output_mode == 3; } } <エラー文> Can't locate loadable object for module Text::MeCab in @INC (@INC contains: C:/usr/site/lib C:/usr/lib .) at C:/usr/lib/DynaLoader.pm line 21 BEGIN failed--compilation aborted at C:/usr/lib/Text/MeCab.pm line 21. Compilation failed in require at ./lab/a.cgi line 2. BEGIN failed--compilation aborted at ./lab/a.cgi line 2. C:/usr/site/lib と C:/usr/lib の中に MeCab.pmファイルを置いても同じエラーがでます。 DynaLoader.pm line 21 や MeCab.pm line 21 は改行のみでした。 MeCab.pm は http://search.cpan.org/~dmaki/Text-MeCab-0.20013/lib/Text/MeCab.pm の Source にあるものをコピペして設置しています。 いろいろと格闘したのですが、お手上げ状態です。 原因がわかる方いらっしゃれば教えていただきたいです。 よろしくお願いしいたします。
質問日時: 2011/11/27 08:14 質問者: hi_mawa
解決済
1
0
-
perl TermExtract 動かない
perl で TermExtract というものを使って専門用語抽出をしたいと思っています。 参考ページ http://gensen.dl.itc.u-tokyo.ac.jp/termextract.h … 形態素解析ソフトは「和布蕪」を使っています。 参考ページの 「和布蕪」の場合の、TermExtract::MeCab サンプルスクリプトを参考にして 動かしてみたんですがうまく動作しません。 <ソース> #! /usr/bin/perl use TermExtract::MeCab; my $data = new TermExtract::MeCab; my $InputFile = "./CGI/mecab_out.txt"; $SIG{INT} = $SIG{QUIT} = $SIG{TERM} = 'sigexit'; my $output_mode = 1; my @noun_list = $data->get_imp_word($InputFile); print "Content-type: text/html; charset=EUC-JP\n\n"; print <<"EOM"; <!DOCTYPE html> <HTML> <HEAD> <TITLE>mecab</TITLE> </HEAD> <BODY> EOM foreach (@noun_list) { # 結果表示 printf "%-60s %16.2f\n", $_->[0], $_->[1] if $output_mode == 1; printf "%s\n", $_->[0] if $output_mode == 2; printf "%s,", $_->[0] if $output_mode == 3; } sub sigexit { $data->unlock_db; } print <<"EOM"; </BODY> </HTML> EOM <---------------> mecab_out.txtには、和布蕪」を使って出食された形態素解析済みのデータ が入っています。 ブラウザでみると、真っ白のページが表示されます。 なにか使い方を間違えているのでしょうか? よろしくお願いいたします。
質問日時: 2011/11/26 21:26 質問者: hi_mawa
解決済
1
0
-
レコードセットを配列のハッシュ形式で返すメソッド
DBI.pmのメソッドで、 selectall_arrayref()は配列の配列形式、 selectall_hashref()はハッシュのハッシュ形式でレコードセットを返しますが、 配列のハッシュ形式で返すメソッドは存在するのでしょうか。 ハッシュのキーは列名として、 ハッシュの値はORDER BY句で指定したとおりに整列された配列へのリファレンスとなるような、ハッシュを生成しようとしています
質問日時: 2011/11/26 14:48 質問者: zyousuke
ベストアンサー
2
0
-
Perl5で同時刻のデータを統合したい
perl初心者です。 下記のような同時刻の2つのデータを1つのデータに統合させたいのですが うまく出来ず困っています。 どうかお知恵を貸していただけないでしょうか。 データは時刻(時:分:秒), 値1, 値2になっています。 test1.txtの同時刻の後ろにtest2.txtの値1と値2を入れ、 欠測値には-999を入れるプログラムを作っています。 厄介なのは、 開始時刻がtest1.txtよりtest2.txtが早い場合や 終了時刻がtest2.txtよりtest1.txtが遅い場合がある事です。 test1.txt 10:13:14, 3.1, 0.1 10:13:15, 6.1, 0.3 10:13:16, 8.7, 0.2 10:13:17, 12.8, 0.3 10:13:18, 13.4, 0.5 10:13:19, 15.2, 0.4 test2.txt 10:13:16, 32.5, 0.01 10:13:17, 33.1, 0.03 10:13:18, 36.2, 0.02 10:13:19, 34.3, 0.01 10:13:20, 33.8, 0.04 10:13:21, 32.6, 0.09 10:13:22, 32.1, 0.08 希望結果 test.txt 10:13:14, 3.1, 0.1, -999.0, -999.00 10:13:15, 6.1, 0.3, -999.0, -999.00 10:13:16, 8.7, 0.2, 32.5, 0.01 10:13:17, 12.8, 0.3, 33.1, 0.03 10:13:18, 13.4, 0.5, 36.2, 0.02 10:13:19, 15.2, 0.4, 34.3, 0.01 10:13:20, -999.0, -999.0, 33.8, 0.04 10:13:21, -999.0, -999.0, 32.6, 0.09 10:13:22, -999.0, -999.0, 32.1, 0.08 以下が自分が作成したプログラムです。 open IN_1, "test1.txt"; open IN_2, "test2.txt"; open OUT, ">test.txt"; while ($input1 = <IN_1>) { # test1.txtの処理 chomp $input1;# 改行削除 @input1 = split(/,/, $input1); # カンマ区切り $n = $n + 1; $time1[$n] = @input1[0]; @time1 = split(/:/, $time1[$n]); # 時刻をコロン区切り @hours1[$n] = @time_l[0]; @min1[$n] = @time_l[1]; @sec1[$n] = @time_l[2]; @a[$n] = @input1[1]; # 値1 @b[$n] = @input1[2]; # 値2 } while ($input2 = <IN_2>) { # test2.txtの処理 chomp $input2; @input2 = split(/,/, $input2); $m = $m + 1; $time2[$m] = @input2[0]; @time2 = split(/:/, $time2[$m]); @hours2[$m] = @time2[0]; @min2[$m] = @time2[1]; @sec2[$m] = @time2[2]; @c[$m] = @input2[1]; # 値1 @d[$m] = @input2[2]; # 値2 } # 開始と終了時刻の計算 # test1.txtの時刻 $hours1_S = @hours1[1]; # 開始時 $hours1_E = @hours1[$n]; # 終了時 $min1_S = @min1[1]; # 開始分 $min1_E = @min1[$n]; # 終了分 $sec1_S = @sec1[1]; # 開始秒 $sec1_E = @sec1[$n]; # 終了秒 $time1_S = $hours1_S*3600 + $min1_S*60 + $sec1_S; # 開始時刻を秒に計算 $time1_E = $hours1_E*3600 + $min1_E*60 + $sec1_E; # 終了時刻を秒に計算 # test2.txtの時刻 $hours2_S = @hours2[1]; $hours2_E = @hours2[$m]; $min2_S = @min2[1]; $min2_E = @min2[$m]; $sec2_S = @sec2[1]; $sec2_E = @sec2[$m]; $time2_S = $hours2_S*3600 + $min2_S*60 + $sec2_S; $time2_E = $hours2_E*3600 + $min2_E*60 + $sec2_E; if($time1_S <= $time2_S){ # 開始時刻の比較 $starttime = $time1_S; }else{ $starttime = $time2_S; } if($time1_E <= $time2_E){ # 終了時刻の比較 $endtime = $time2_E; }else{ $endtime = $time1_E; } $j = $endtime - $starttime;# 全体のデータ個数 # test.txtへ出力 for($i=1; $i<=$j; $i++){ if(@hours1[$i] != @hours2[$i] && @min1[$i] != @min2[$i] && @sec1[$i] != @sec2[$i]){ printf OUT "%2d:%2d:%2d %5.1f% 5.1f %5.1f %7.2f\n", @hours1[$i], @min1[$i], @sec1[$i], @a[$i], @b[$i], -999, -999; }elsif(@hours1[$i] == @hours2[$i] && @min1[$i] == @min2[$i] && @sec1[$i] == @sec2[$i]){ printf OUT "%2d:%2d:%2d %5.1f% 5.1f %5.1f %7.2f\n", @hours1[$i], @min1[$i], @sec1[$i], @a[$i], @b[$i], @c[$i], @d[$i]; }else{ printf OUT "%2d:%2d:%2d %5.1f% 5.1f %5.1f %7.2f\n", @hours2[$i], @min2[$i], @sec2[$i], -999@, -999, @c[$i], @d[$i]; } } close IN_1; close IN_1; close OUT; とても汚いプログラムになってしまいました… このプログラム以外でも構いませんのでどうかよろしくお願い致します。
質問日時: 2011/11/24 16:43 質問者: Lydiard
ベストアンサー
4
0
-
連続した行を一行にして出力したい
こんばんは。 自分の力では解決できないので、お力をお貸しいただけないでしょうか。 以下のようなフォーマットのデータがあります。 「--」で一区切りです。 a b c d -- e f g h -- i j k l -- これを、以下のようなフォーマットで、 「--」で区切られたまとまりの行を全て結合して、 各行の後ろに付け加えたいのですが、 a -> abcd b -> abcd c -> abcd d -> abcd -- e -> efgh f -> efgh g -> efgh h -> efgh -- i -> ijkl j -> ijkl k -> ijkl l -> ijkl -- 自分で色々やってみましたが、うまくできません。 どうかよろしくお願いいたします。
質問日時: 2011/11/23 18:52 質問者: hachibunbunbun
ベストアンサー
1
0
-
perl HTML::TreeBuilder返り値
perl、HTML::TreeBuilderモジュールを使ってHTMLからほしい情報を抽出しています。 探したタグがない場合に、次の処理にいけるように判定したいのですが、うまくいきません。 以下抽出部分のソースです。 my $tree = HTML::TreeBuilder->new; $tree->parse($html); my $items = $tree->look_down('class', 'referencelink')->find('li'); $items = $items->as_text; HTML内に<li class="referencelink">というタグがない場合 $items にどんな値が入るのでしょうか。 if (!defined($items)) や if ($items=="")で判定しても、 my $items = $tree->look_down('class', 'referencelink')->find('li'); で処理が止まってしまいます。 どうしたらよいでしょうか? よろしくお願いいたします。
質問日時: 2011/11/23 00:19 質問者: hi_mawa
ベストアンサー
1
0
-
Net::SSH::Perlについて
WindowsXPにActivePerlを導入し、Net::SSH::Perlを使用してLinuxサーバにssh接続をしたいのですが、どうもうまく動いてくれません。 ■ソース #!perl use Net::SSH::Perl; use strict; my $host = "192.168.1.250"; my $user = "test"; my $pass = "testtest"; my $cmd = "id"; my $ssh = Net::SSH::Perl->new($host); $ssh->login($user, $pass); my($stdout, $stderr, $exit) = $ssh->cmd($cmd); ■Windowsのコマンドプロンプトから実行すると Can't locate Math/Pari.pm in @INC (@INC contains: D:/add_program_files/perl/site/lib D:/add_program_files/perl/lib .) at D:/add_program_files/perl/lib/Net/SSH/Perl/Util/SSH2MP.pm line 6, <GEN0> line 1. BEGIN failed--compilation aborted at D:/add_program_files/perl/lib/Net/SSH/Perl/Util/SSH2MP.pm line 6, <GEN0> line 1. Compilation failed in require at D:/add_program_files/perl/lib/Net/SSH/Perl/Util.pm line 56, <GEN0> line 1. BEGIN failed--compilation aborted at D:/add_program_files/perl/lib/Net/SSH/Perl/Kex/DH1.pm line 10, <GEN0> line 1. Compilation failed in require at D:/add_program_files/perl/lib/Net/SSH/Perl/Kex.pm line 6, <GEN0> line 1. BEGIN failed--compilation aborted at D:/add_program_files/perl/lib/Net/SSH/Perl/Kex.pm line 6, <GEN0> line 1. Compilation failed in require at D:/add_program_files/perl/lib/Net/SSH/Perl/SSH2.pm line 6, <GEN0> line 1. BEGIN failed--compilation aborted at D:/add_program_files/perl/lib/Net/SSH/Perl/SSH2.pm line 6, <GEN0> line 1. Compilation failed in require at D:/add_program_files/perl/lib/Net/SSH/Perl.pm line 52, <GEN0> line 1. 上記を解決しようにも検索にHitせず、対処に困っています。 どなたか同じ境遇の人がいらっしゃったら教えてください。
質問日時: 2011/11/21 09:17 質問者: yuntaka
解決済
1
0
-
open関数を +> で用いても。。。
モノの本によるとファイルを開く際にファイル入出力記号を +> にすると、追加書き込みは出来ないものの、読み取り、書き込み、新規作成、上書きが出来るとのこと。 ファイルからデータを読み込んで、読み込んだ内容を加工して、すぐにファイルに保存する用途に最適だなと思いましたが、実際に使ってみると読み出しをしてくれません。 何がいけないのでしょうか。 my @s; my @t=('a','b'); open IO,'+>test.txt'; @s=<IO>; print "\$@の要素数は ".@s."個\n"; for(@t) { print IO $_."\n"; } close IO;
質問日時: 2011/11/18 18:40 質問者: makoji
ベストアンサー
2
0
-
作業状況を任意のタイミングで保存する
作業に時間がかかるプログラムを組んでいます。 プログラムの実行をどうしても中断したい場合、ctrl+Cで強制終了することが出来ます。しかしそれでは、その時点の作業状況を保存できません。 何かの操作をしたら、その時点の作業内容を保存してから終了する。次回、その保存内容を元に、そこから続きを始められるという仕組みを考えたいのですが、どのようにすれば良いか、まるで分かりません。 具体的に教えてくださらなくても、これを勉強しなさいで構いません。アドバイスをいただけないでしょうか。
質問日時: 2011/11/18 15:14 質問者: makoji
ベストアンサー
1
0
-
perlを使ってファイル分割
ーーーーーーーーーーーー SRR_1 X1 Y1 SRR_1 X2 Y2 ~ SRR_1 Xn Yn SRR_2 X1 Y1 SRR_2 X2 Y2 ~ SRR_3 X1 Y1 ~ SRR_xxx X1 Y1 ーーーーーーーーーーー このようなタブ区切りのファイルを、一列目のSRR以降の数字が変わるごとに以下のようにファイルを分割したいと思っています。 SRR_1.txt ーーーーーーー X1 Y1 X2 Y2 ~ Xn Yn ーーーーーーー SRR_2.txt ーーーーーーー X1 Y1 ~ Xn Yn ーーーーーーー perl初心者ですが、どうかよろしくお願いします。
質問日時: 2011/11/18 13:56 質問者: kjng
ベストアンサー
4
0
-
変換について
お世話になっております。 下記要件を満たす記述をご教授頂けますでしょうか。 <概要> アンケートデータを結合してアウトプットします。 ・アンケートデータ 1~10までの項目を当てはまるものだけ回答してます。 例)Aさん:1/5/6/8 Bさん:3/4/7/8/9/10 ・アウトプット形式 1~10のカラムがあり、回答された所を1とし、回答されてないものを0とする。 例)Aさん:1/0/0/0/1/1/0/1/0/0(1,5,6,8を1とし、それ以外を0とする) Bさん:0/0/1/1/0/0/1/1/1/1(3,4,7,8,9,10を1とし、それ以外を0とする) よろしくお願い致します。
質問日時: 2011/11/16 22:28 質問者: kotachata
ベストアンサー
4
0
-
マッチした行の上の行を抽出
初心者で至らぬ点が多々有りますが、宜しくお願いします。 環境はWindows7-64bit、ActivePerl 5.12.4 Build(64bit)を使用しています。 テキストが数百個有り、全て以下のような構成になっています。 文章1 文章2 文章3 kwd 文章4 kwd 文章5 文章6 kwd ~以下略~ ファイル郡をリストとして読み込み、それぞれのファイルに対して kwdをキーとして検索し、該当した行の上の行を抽出しようとしています。 ~ファイルリスト読み込みルーチンは省略、以下各ファイル毎のサブルーチン~ sub execute { open(INP, "$inp"); #ファイル読み込み open(OUT, ">rep\\$inp"); #ファイル書き出し(フォルダを変えて同名) while(<IN>){ if($_ =~ m/kwd/){ #現在の行が"kwd"を含んでいたら print OUT $prev; #前の行を抽出のつもり } $prev = $_; #現在の行データを$prevに格納 } close(INP); close(OUT); } $_には現在の行データが入っていると認識しており 上記の書き方で$prevには一段上の行データが入るのでは と思ったのですが、現状$prevを出力してもカラです。 文法ミスよりも、そもそも考え方が間違っているような気がして なりませんが、どうか解決法を教えて頂きたく。
質問日時: 2011/11/16 14:33 質問者: gyokotu
解決済
5
0
-
正規表現の\Gの使い方
正規表現の\Gの使い方で質問です。 ものの本によると、\Gをつけるとパターンマッチは前回の処理の続きから行われるとのこと。すると以下のようなコードなら、 ta tb tc td te となるべきと思われます。 ところが実際は ta ta ta ta ta 明らかに\Gは無視されて、毎回$testの先頭から処理が行われています。 どこに間違いがあるのでしょうか。 #! c:/perl/bin/perl $test='tatbtctdtetftg'; for($i=0;$i<5;$i++) { $test=~/(\Gt.)/; print $1."\n"; }
質問日時: 2011/11/16 10:20 質問者: makoji
解決済
1
0
-
htmlフォームから受け取ったファイルをDBへ保存
htmlのフォームタグ内で、inputtyp=file で受け取ったwordファイルやPDFファイルを perlで書いたCGIプログラムのほうで、MYSQLのデータベースへ保存したいのですが どのように書けばいいのかわかりません。 保存する型はBLOB型でよいといくつかのサイトで書いてあるのですが、 SQL文の書き方や、フォームから受け取ったデータの処理の仕方などの詳細が わかりません。 フォームで受け取ったファイルをデータベース(mysql)へ保存する 簡単なサンプルコードなどが知りたいです。 よろしくお願いいたします。
質問日時: 2011/11/15 17:33 質問者: hi_mawa
ベストアンサー
3
0
-
正規表現の o オプションの意味が分かりません
正規表現の質問です。 言語はPerlで組んでいます。 いくつかのhtmlファイルを順に開き、以下のようなコードを実行します。 $http{BODY}=~ /(?<=\[ No\.)([0-9]{$digit})(?= \/ $num)/o; ここで $http{BODY} 読み込んだhtmlファイル $digit 変数。整数値。 $num 変数。整数値。 この正規表現で、 ・・・・[ No.2 / 3 ]・・・・ といった感じの文字列から、この場合は「2」をマッチさせようとしました。 ところが最初に読み込んだファイルではうまくマッチしたのですが、2番目のファイルではマッチしません。 o オプションを外すとうまくいきました。o オプションは変数展開を1回行うとのことです。元のファイルはやたらとでかいので、o オプションを付けたら少しは早くなるかなと思いつけていたのですが。。。 ネットで調べると、 while( $s = <FH> ){ # 一度だけ展開する if ( $s =~ /$arg/o; ){ .... } このような用例で、$argは変数というよりも、セットされた文字列として評価されるとあります。でも前述の正規表現の2つの変数、$digitと$numは普通に値を書き換えられていましたけど。。。 それとも o オプションを付けた正規表現では、その正規表現を処理するためのメモリ領域に一度変数の値を取り込むと、二度と読み込むことをしないということでしょうか。だから変数の値が変わっても、正規表現が用いるメモリ領域の値は変化しない。。。 でも $http{BODY}=~ /(?<=\[ No\.)([0-9]{$digit})/o; だったらちゃんと$digitの値が変わったことに対応しているんです。他にもいっぱい o オプションを付けた正規表現を用いていますけど、全部正常に作動しています(バグに気づいていないだけかもしれませんけど)。 前述の正規表現とこれら正常に作動する正規表現の違いは、後者が変数1個であるのに対して、前者は2個であるということです。「変数展開を1回行う」の意味は、変数1個にしか対応しないという意味なのでしょうか。でも前者も最初のファイルだけなら2個の変数に対応しているのです。 どういうことなのでしょう。
質問日時: 2011/11/15 16:56 質問者: makoji
ベストアンサー
2
0
-
perl cgi 文字コード変換について
掲示板でログファイルへの書き出しの際に文字コードをshift-jisに変更したいのですが, #投稿された値を受け取る if ($ENV{'REQUEST_METHOD'} eq 'POST') { read(STDIN, $alldata, $ENV{'CONTENT_LENGTH'}); } else { $alldata = $ENV{'QUERY_STRING'}; } foreach $data (split(/&/, $alldata)) { ($key, $value) = split(/=/, $data); $value =~ s/\+/ /g; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack('C', hex($1))/eg; $value =~ s/\t//g; $in{"$key"} = $value; } #ヘッダの表示 print "<html>\n"; print "<head><title>掲示板</title></head>\n"; print "<body>\n"; #受け取ったデータをファイルに書き込む if ($in{'handle'} ne '' && $in{'message'} ne '') { if (open(FH, "bbs.txt")) { @file = <FH>; close(FH); use CGI; $cgi=new CGI; $name1=$cgi->param('handle'); $name2=$cgi->param('number'); use Encode; use Encode::Guess qw(euc-jp shiftjis 7bit-jis); encode("shiftjis",decode('Guess',$name1)); encode("shiftjis",decode('Guess',$name2)); unshift(@file, "$name1\t$name2\n"); ##この部分で if (open(FH, ">bbs.txt")) { print FH @file; close(FH); } else { print "<p>ファイルに書き込めません。</p>"; } } else { print "<p>ファイルを読み込めません。</p>"; } } #投稿フォームの表示 print "<form method=\"post\" action=\"bbs.cgi\">\n"; print "<p>\n"; print "ハンドルネーム<br>\n"; print "<input type=\"text\" name=\"handle\" size=\"20\" value=\"\"><br>\n"; print "メッセージ<br>\n"; print "<input type=\"text\" name=\"message\" size=\"20\" value=\"\">\n"; print "</p>\n"; print "<p><input type=\"submit\" value=\"送信する\"></p>\n"; print "</form>\n"; #記事の一覧表示 if (open(FH, "bbs.txt")) { while ($data = <FH>) { ($handle, $message) = split(/\t/, $data); print "<p>\n"; print "投稿者:$handle<br>\n"; print "メッセージ:$message\n"; print "</p>\n"; } } else { print "<p>ファイルを読み込めません。</p>"; } #フッタの表示 print "</body>\n"; print "</html>\n"; exit; このような感じでかいたのですが文字コードを変更し,unshift(@file, "$name1\t$name2\n");と記述すると何も書かれずに空白になってしまいます..なぜでしょうか?困っています.教えて下さい. ちなみにunshift(@file, "$in{'handle'}\t$in{'message'}\n"); と文字コードの変更を意識しなかった場合にはちゃんとファイルに書かれています. jcode.plなどは使わずにencodeで行いたいです.
質問日時: 2011/11/14 02:15 質問者: u_f_o_pech
ベストアンサー
2
0
-
perlでファイルへの書き込みができません!
perlでファイルへの書き込みができません! 教えてください. webプログラミング初心者なのですが, フォームから送信されたデータをshift-jisに変換させてからbbs1.txtへの内容の書き出しを行いたいのですが, #!/Applications/XAMPP/xamppfiles/bin/perl print "Content-type: text/html; charset=utf-8\n\n"; # フォーム部分を表示する print <<EOL; <html> <body> <h2>一行掲示板</h2> <form method="post" action="bbs1.cgi"> メッセージ:<input type="text" name="message" size="60"> <input type="submit" value="送信"> </form> <hr> EOL &ReadParse(*form); # フォームの値を取得 $message = $form{"message"}; use Encode; use Encode::Guess qw(euc-jp shiftjis 7bit-jis); encode("shiftjis",decode('Guess',$message)); # ログファイル読み込み open(IN, "bbs1.txt"); @log = <IN>; close(IN); # メッセージが入力されているときは書き込み処理を行なう if ($message ne "") { # ログ先頭にメッセージを格納 unshift @log, "$message\n"; # ログファイルに書き込み open(OUT, "> bbs1.txt"); print OUT @log; close(OUT); } # ログ表示 foreach $data (@log) { chop $data; print "$data<br>\n"; } print "</body>\n</html>\n"; このような感じにし実行して後でtxtファイルを見ると何も書かれていません>< なぜでしょうか...? 教えて下さい>< 今気づいたのですがそれに関連してなのかログも表示されていませんでした...>< txtファイルのアクセス権は読み書き可になっています encodeはあえてつかっています.
質問日時: 2011/11/13 16:45 質問者: izuuuu
ベストアンサー
1
0
-
Webプログラミング.ファイルへの保存について
Webプログラミング初心者です. ファイルへの保存について質問です>< フォームから受け取ったデータを文字コード変更させてファイルに保存する場合 $name1=$cgi->param('name'); $name2=$cgi->param('number); このように一度変数にいれ. 次に文字コードの変換をし変換した内容を再び$name1,$name2に格納した場合, ファイルの書き出し•保存のソースコードは, if (open(FH, "form.txt")) { @file = <FH>; close(FH); unshift(@file, "$in{'name1'}\t$in{'name2'}\n"); //ココの部分です. if (open(FH, ">form.txt")) { print FH @file; close(FH); } else { print "<p>ファイルに書き込めません。</p>"; } } else { print "<p>ファイルを読み込めません。</p>"; } このような感じで良いのでしょうか? unshift(@file, "$in{'name1'}\t$in{'name2'}\n"); の変数名の部分では例題はフォームから受け取ったものを そのまま書いてある例が多くどのように記述したら良いかわかりません. 一度やってみてできなかったので他の部分にミスがあったのかと探し中ではありますが... 教えてください.お願いします><
質問日時: 2011/11/13 01:28 質問者: izuuuu
ベストアンサー
1
0
-
Perl/配列のループに関して教えてください。
my @shop = [ {'start_hour'=> '1100','shift'=> [1,2] }, {'start_hour'=> '1130','shift'=> [1,3] } ] という配列があってそれをループで回したいのですが、 ▼以下だとNG foreach my $data (@shop){print $data->{start_hour};} ▼以下だと最初の1つだけOK foreach my $data (@shop){print $data->[0]->{start_hour};} という状況です。なぜ$data->{start_hour};で取得できないのでしょうか? 助けて頂けるとうれしいです★
質問日時: 2011/11/07 11:01 質問者: aaaa5
ベストアンサー
2
0
-
@INCにrequireされたファイルが無い
自作のCGIを実行したところ Can't locate BASE64 in @INC (@INC contains: C:/Perl/site/lib C:/Perl/lib .) at g etHTTP line 71. のようなエラーが出ます。 BASE64がインストールされているかどうか確認するために、次のサイトのcheck.cgiを実行してみました。 http://perl.shtml.jp/check/check.html インストールされているということなので、検索を掛けてBase64.pmのパスを調べました。 C:\Perl\lib\MIME そこで以下のコードを追加して実行しなおしました。 unshift @INC, "C:/Perl/lib/MIME"; 残念ながらうまく動きませんでした。 Can't locate BASE64 in @INC (@INC contains: C:/Perl/lib/MIME C:/Perl/site/lib C: /Perl/lib .) at getHTTP line 71. どうすれば良いでしょう。 お手数をお掛けします。
質問日時: 2011/11/07 05:21 質問者: makoji
ベストアンサー
2
0
-
要らない配列を無くしたい。Perl
要素のない配列を消したいです。 do\n be\n usual\n become\n get\n look\n watch\n このような複数行の文があり"a"が入っている行だけ配列に突っ込みたいと思っています。 自分が試した方法として。 @line = split(/\n/,$content); とりあえず改行で区切り配列にぶち込んでいき。 foreach $line (@line){ unless ($line =~/a/){ $line = undef; } } その次に"a"が入っている以外の配列にundefを入れるようにしていました。 しかしこれだとundefが入っている配列がたくさん出来てしまい納得がいきません。 要素のない配列を消したいです。 どなたかご教授お願いします。
質問日時: 2011/11/05 23:37 質問者: teachmegoogle
ベストアンサー
5
0
-
このスクリプトの間違いを指摘してください。
このスクリプトの間違いを指摘してください。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>test</title> <script type="text/javascript"> <!-- function doCountDown() { setInterval('countDown()', 500); } function countDown() { var now = new Date(); var tomorrow = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1); var diff = Math.floor((tomorrow.getTime() - now.getTime()) / 1000) + 1; var hour = Math.floor(diff / 3600); diff %= 3600; var min = Math.floor(diff / 60); var sec = diff % 60; document.getElementById('cd').innerHTML= "明日まで、あと" + hour + "時間" + min + "分" + sec + "秒"; } //--> </script> </head> <body onload="javacript:doCountDown();"> <div id='cd'></div> </body> </html> 自動更新のカウントダウンタイマーを作ろうと思ってるのですが....
質問日時: 2011/11/03 00:59 質問者: lucky520aki
解決済
1
0
-
xamppでcgiが動かない
Mac OS10.6.8でXAMPPをインストールした後 htdocs/test/というフォルダを作って http://test/ となるような環境を作りました。 httpd-vhosts.confファイルには <VirtualHost *:80> DocumentRoot "/Applications/XAMPP/xamppfiles/htdocs/test" ServerName test </VirtualHost> <Directory "/Applications/XAMPP/xamppfiles/htdocs/test"> Options Indexes FollowSymLinks MultiViews Includes ExecCGI AddType text/html .shtml .html AddHandler server-parsed .shtml .html AddHandler cgi-script .cgi .pl AllowOverride All Order allow,deny Allow from all </Directory> このように記述しております。 http://test/test.cgiにアクセスしたら Error message: Premature end of script headers: test.cgi このように言われてしまいました。 これは何が原因なのでしょうか? パスが間違っているのかな?と思ったのですが、XAMPPを使った場合 test.cgiファイルのパスはどうすればいいのでしょうか? よろしければ教えて下さい。 ※ とりあえず usr/bin/perl としました。
質問日時: 2011/10/28 21:09 質問者: tella8
解決済
1
0
-
perl超初心的な質問
perl初心者です。 辞書ファイルを編集するのに必要外な文字が多く、手作業では限界がありperlを使おうと思います。 ちまちまと自分で打ったのですが、いざ実行するとうまくいきません。 右も左もわからず途方にくれてます。 下が編集したい文です。 行の最初の”を削り、読んだものに上書きしたいのです。 "さ来週 [さらいしゅう]","(n-adv,n-t) week after next","",0,0,0,"" "さ迷う [さまよう]","(v5u) to loiter/to putter/to prowl/to wander about/to roam about/to knock around","",0,0,0,"" "ざあざあ","(adv) sound of rushing water/sound of pouring rain/white noise sound/(P)","",0,0,0,"" そして下の文が打ったperlの内容です。 $inputfile="DicA.csv"; open(DIC,"$inputfile") or die "$!"; -----------画面に表示される while ($line1 = <DIC>){ $string =~ s/"//g; open(OUT,"> DicA.csv"); ----------上書きされ空のファイルができる $out1 = join(",",@array); print OUT; } close(DIC) お手数をおかけしてすみません。 困っています。 どうかよろしくお願いします。
質問日時: 2011/10/27 03:04 質問者: neon111
ベストアンサー
1
0
-
正規表現 最長マッチが、機能しない。
# 正規表現 最長マッチが、機能しない。 # # Windows XP(sp3) ActivePerl # # This is perl 5, version 12, subversion 3 (v5.12.3) built for MSWin32-x86-multi-thread # (with 9 registered patches, see perl -V for more detail) # # Copyright 1987-2010, Larry Wall # # Binary build 1204 [294330] provided by ActiveState http://www.ActiveState.com # Built Feb 9 2011 14:38:22 # use strict; use utf8; use Encode; my $doc = "(L)12×(H)34×(W)56\n"; $doc =~ s%(\([LHW]\)(\d+))([^×cm])%$1cm$3%ig; # ←この部分 print encode("cp932", $doc); {出力結果} (L)1cm2×(H)3cm4×(W)56cm
質問日時: 2011/10/26 17:45 質問者: hh77777
ベストアンサー
8
0
-
PerlソースでのSQLのエラーについて
お世話になります。 下記のCGIで掲示板を作成したいと思っているのですが、エラーが出てしまい設置できずにおります。 http://plus-code.net/cgi-flash-bbs/perlbbs/ サポートも終了してしまっていてお手上げ状態です・・・。 エラー内容は以下の通りです。 DBD::mysql::st execute failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'type=InnoDB' at line 1 at C:/www/users/○○○/cgi-bin/config.cgi line 87. 87行目近辺のソースはこのような感じでした。 *********************************** my $dbh = DBI->connect("DBI:mysql:$in{d_databasename}:$in{d_hostname}", $in{d_username}, $in{d_password},{RaiseError => 1, PrintError => 0, AutoCommit => 0 }) || &error_html($ref_ini->{action_error}{db_er1}); //line 70 my $user="forum"; my $pass=&Cf::Random::d_crypt($user); my $random_url=&Cf::Random::az09($ref_ini->{setup}{adjust30}); my @que=( "insert into public values(1,'','','','','','','http://','',0,1,0,3000,10,10,10,30,7,0,1,3000,1,1,'','$random_url','default','default','','','');", "insert into member values('u$tm','$user','$ip','$pass','','webmaster',0,0,'',0)", "insert into section values('s$tm',0,'section_title','section_explain','webmaster','$user')", "insert into forum values('f$tm','s$tm',0,'forum_title','forum_explain','webmaster','$user')", "insert into contact values('c$tm','$user','webmaster','to_forum','webmaster','message title','message comment','','')", "insert into clap values('s$tm','f$tm','t$tm','p$tm','w$tm','$user','$ip','testclap',10)", "insert into post values('s$tm','f$tm','t$tm','p$tm','$user','webmaster','$ip','test title','test message','','',1,'')", "insert into report values('r$tm','p$tm','$user','report title','report message')" ); eval{my ($sth); for (my $j=0;$j<scalar(@{$$ref_sql{create_table}});$j++) { //line 87 $sth = $dbh->prepare($ref_sql->{create_table}[$j]);$sth->execute; }#for end for my $j(@que){$sth = $dbh->prepare($j);$sth->execute; $sth->finish;}$dbh->commit;$dbh->disconnect;}; if($@){$dbh->rollback;$dbh->disconnect;&error_html($@);} //line 95 *********************************** 何卒宜しくお願い致します!
質問日時: 2011/10/26 08:31 質問者: letis
ベストアンサー
1
0
-
初心者が超初歩的な質問です
perlで初歩的な質問です。 辞書ファイルで編集していたら必要以外な文字が多くて自力で削っていたら大変なので、perlでしてみました。 参考資料を見ながら一応打ったのですが、どうもうまくいきません。 実は、最初のファイル入出力のところです。 open(DIC,"> $inputfile"); 初期化されて空ファイルになる open(DIC,"< $inputfile"); とすると画面には表示されるが処理が進まない。 下が打った文です。 $inputfile="DicIn.csv"; open(DIC,"+> $inputfile") or die "$!"; while (<DIC>){ @array = <DIC>; @Array = (@Array1,@Array2); $a1 = ~ s/"//g; $a2 = ~ s|///|---|g; print(DIC); } close(DIC) 本当に初歩的ですみません 困ってます、よろしくお願いします
質問日時: 2011/10/25 14:40 質問者: neon111
解決済
2
0
-
perlでSMPT認証してメールを送信したい。
こんばんわ。 Perlで一点伺いたいことがございます。 SMTP認証して、メールを送信したいのですが ネット上でサンプルをさがしてきて実際に試したのですが うまくいきません。 どうしたらいでしょうか?以下が実施に動かしているコードです。 #!/perl/perl/bin/perl use strict; use warnings; use CGI::Carp qw(fatalsToBrowser); print"content-type: text/html\r\n\r\n"; print "Hello World!\n"; use Net::SMTP; #SMTPサーバの指定 my $mailhost = 'smtp.gmail.com'; my $mailport = 587; my $mail_username = 'XXX@gmail.com'; my $mail_password = 'パスワード'; my $to_mail = '宛先'; my $from_mail = '送信先'; my $smtp = Net::SMTP->new($mailhost,Port => $mailport); $smtp->auth($mail_username, $mail_password); #メールの送信先 $smtp->mail($from_mail); $smtp->to($to_mail); #メールの内容 $smtp->data(); $smtp->datasend("From: $from_mail\n"); $smtp->datasend("To: $to_mail\n"); $smtp->datasend("Subject: test\n"); $smtp->datasend("\n"); $smtp->datasend("test\n"); #メール内容終わり $smtp->dataend(); #接続を切る。 $smtp->quit; print $smtp; ほぼコピーアンドペーストなのですが、うまくいきません。 とりあえず、newしたオブジェクト $smtpを出力してみると アドレス的なものが表示されます。 Net::SMTP=GLOB(0x7d15ec) ただ、これは認証情報が適当でも出力されるようです。 何度やってもメールは届いていないようなので認証の時点でまちがっているのでしょうか? ただ、認証情報は実際にメールソフトで使っているものなので、間違いないと思うのですが、識者の方よろしくご教授お願いします。
質問日時: 2011/10/24 23:39 質問者: 1000vicki
ベストアンサー
1
0
-
Perl Vlookupみたいに
恐れ入ります。 PerlでVlookupみたいに、マッチしたものの閲覧をしたいのですが、 どのようにしたら良いでしょうか。 lookup.cgi code.csv data.csv というファイルを用意して、 code.csvには、7桁のコードの一覧が並び、 data.csvの中でマッチした7桁のコードの別列のデータの一覧を取得したいのですが、 つまり、code.csvに書かれている7桁のコードにマッチする全てのデータを、 data.csvの中の指定した列から抜き出して羅列する感じです。 よろしくお願いします。
質問日時: 2011/10/20 21:16 質問者: spider32
ベストアンサー
1
0
-
perlでactive directoryに登録
perlスクリプトを使いactive directoryにユーザを登録したいと思っております。 perlもactive directoryも初めてで理解していませんが 仕事でどうしてもやらなくてはならないためどなたかわかる方教えて頂けますと助かります。 環境: windows server 2008R2 active directory 2008 centos 6 やりたいことは、perlを使いactive directoryにユーザ登録をしたいのですが どうやっても登録することができません。 必要なperlモジュールはインストールしてるつもりです。 以下がスクリプトとなります。 =================ここから================== #!/usr/bin/perl use strict; use Net::LDAP; my $ldap_host = 'xxx.xxx.xxx.xxx'; my $bind_dn = 'cn=admin,o=example,c=com'; my $bind_pw = 'password'; my $ldap = Net::LDAP->new( $ldap_host ) or die "$@ $!"; $ldap->bind( $bind_dn, password => $bind_pw ) or die "$@ $!"; $uid = "localuser"; $suffix = ",ou=People,dc=example,dc=com"; $dn = "uid=" . $uid . $suffix; $addResult = $ldap->add( $dn, attr => [ 'cn' => $uid, 'sn' => $uid, 'mail' => $uid . '@example.com', 'uid' => $uid, 'objectClass' => [ 'top', 'person', 'organizationalPerson' ], ] ); if ( $addResult->code == 0 ) { print "added $dn\n"; } else { $ldap->unbind; warn "failed to add entry: ", $addResult->error, "\n"; exit( $addResult->code ); } =================ここまで=================== 上記を実行すると以下のエラーコードが返ってきます。 comment:AcceptSecurityContext error, このエラーについてとあるサイトをみると 「ユーザーは次回ログオン時にパスワード変更が必要」にチェックをいれていると 出力されてしまうとかかれていたのでチェックを外しているのですが結果は同じです。 上記のスクリプトは以下のサイトを参考にして作ったのですが わからない部分があります。 http://d.hatena.ne.jp/askadna/20080326 http://www.knowd.co.jp/yamazaki/index.php?q=node/134 $ldap->addのメソッド?に$dnとattr~~というパラメータを与えているのですが 配列の階層が異なっていますがaddメソッドはこれを認識することはできるのでしょうか。 例えば、 $ldap->addを部分を消して $addResult = ( $dn, attr => [ 'cn' => $uid, ~以下省略~ 以下のようにprintで表示すると配列の階層はバラバラです。 これでaddは正常に階層をみて動作するのでしょうかということです。 print $addResult[0]・・・・uid=localuser,ou=People,dc=example,dc=com print $addResult[1]・・・・attr print $addResult[1]->[0]・・・・cn print $addResult[1]->[1]・・・・localuser print $addResult[1]->[2]・・・・sn ~~省略~~~ ちなみに、searchメソッドでldapの情報の取得はできています。 少し気になるのはActive directoryに必須項目があり それをattrに格納させていないことが原因だったりするのでしょうか。 Active Directoryの必須項目というのがわかりませんが基本的に例えばSIDなどは システム自動で入れてくれるとおもっていますが・・・ 上記のスクリプトでADにバインドできていることがAD側のログで確認できております。 addでこけているみたいなのですが、どうかよろしくお願い致します。
質問日時: 2011/10/14 00:47 質問者: nicostars
ベストアンサー
4
0
-
Perlの正規表現について
Perlの正規表現について質問です. ■質問 aaa bbb aaa bbb ccc "ddd" aaa bbb ccc "ddd eee" aaa bbb ccc ddd eee "fff ggg hhh iii" というような,文字列が書かれているファイルがあるとします. ※ダブルクォーテーションが無い行もあります. ※ダブルクォーテーション内のスペースの数は,行によってそれぞれ異なります. これを,ダブルクォーテーションの中にあるスペースだけ アンダーバーに置換する場合の正規表現を教えて下さい. つまり,下記の出力にしたいです. aaa bbb aaa bbb ccc "ddd" aaa bbb ccc "ddd_eee" aaa bbb ccc ddd eee "fff_ggg_hhh_iii" ■条件 ※ちょっと古いPerlでも動くよう,ゼロ幅肯定/否定後読((?<),(!<))は使わないでください. ※単に実現するだけなら, # cat inputfile | print -pe 'sub f(){}(shift;s/ /_/;return $_;); s/(\".*\")/&f($1)/e;' みたいな感じで置換できそうですが,「正規表現だけで簡単に書けるかどうか」が知りたいのです(正規表現だけで実現出来る場合,そのアルゴリズムを知りたいです).そのため,関数と/eオプションは使わないでください.
質問日時: 2011/10/12 08:40 質問者: kitcutter
ベストアンサー
2
0
-
文字コードについて
&#27005;&#12375; (&は半角です。) というような文字コード?で文字が記入されています。これはなんという文字コード名なのでしょうか? これを通常の文字として読めるように変換したいと考えていますが、可能でしょうか?よろしくお願いいたします。
質問日時: 2011/10/10 06:49 質問者: TPR_SET
ベストアンサー
3
0
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
【Perl】に関するコラム/記事
-
メダロット:第249話「Vol.249※期間限定公開」
天才メダロッター六葉カガミの戦いを描く「メダロット再~リローデッド~」(漫画:伯林、監修:イマジニア)、20周年を迎えた『メダロット』が新たなストリーでココに再起動!!★全話無料で読める、週刊メダロット通信...
-
日本古来の伝統工芸「金継ぎ」で修復した食器は前と同じように使えるの?
大切にしている食器が割れてしまったら、きっと誰もが「元に戻したい」と願うだろう。「教えて!goo」にも「割ってしまったお気に入りの食器を復活できる?」という質問があり、最適な方法について様々な意見が寄せら...
-
メダロット:第248話「Vol.248※期間限定公開」
天才メダロッター六葉カガミの戦いを描く「メダロット再~リローデッド~」(漫画:伯林、監修:イマジニア)、20周年を迎えた『メダロット』が新たなストリーでココに再起動!!★全話無料で読める、週刊メダロット通信...
-
タンス預金で旧紙幣を持ち続けるのは大丈夫?タンス預金のメリット・デメリットを紹介
今年7月、約20年ぶりに新紙幣が発行される。紙幣が変わることを改刷というが、この改刷には「タンス預金をあぶり出す目的があるのでは?」という見方をする人もいるという。「教えて!goo」にも「改刷で本当にタンス...
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
テキストファイルで提出とは?
-
ファイルをディレクトリ分配のプロ...
-
openした後、closeしないでプログラ...
-
perlのプログラミング 部分入れ替え...
-
Perlのエラーについてご教授くださ...
-
画像が表示でnull; this.src
-
perlプログラミング 空白行削除
-
Perlで特定文字列から特定文字列ま...
-
ラズベリーパイ初心者です。 ラズパ...
-
アルファベットに付いて質問します...
-
#!/usr/bin/perlで書きだしたCGIを...
-
perlのflock関数でロックをかけたま...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□の中...
-
perlでリテラル値はメモリにどのよ...
-
perlで2次元配列をサブルーチンに...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方についての質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
openした後、closeしないでプログラ...
-
テキストファイルで提出とは?
-
INDIRECT 横に再度抽出したい
-
Perlで特定文字列から特定文字列ま...
-
perlをバージョンアップしたら、今...
-
Wallpaper Engineでおすすめの壁紙...
-
arduino の割り込み処理について
-
アルファベットに付いて質問します...
-
Strawberry Perl for Windows で Ou...
-
Perlで時間の計算
-
このファイルを開く方法で困ってい...
-
TeraPadエディターの操作方法について
-
cgiでサーバーにファイルを追加する
-
フローチャート 九九
-
LinuxにおいてのPerlのプログラムの...
-
perl 初等プログラミングについて
-
Perlのエラーについてご教授くださ...
-
こんにちは ブラケッツでプログラミ...
-
bashスクリプト
-
perlプログラミング 空白行削除
おすすめ情報