Perl

全6054件中121~140件表示
  • perlのリストと配列の違いについて

    Perlの本を読んでいたらリストというのがでてきました。 読んでいてもリストと配列の違いがよくわかりません。 リストと配列はどう違っていてどのように使いわけるのでしょうか?

  • 複数のテキストをまとめるperl or ruby

    以下のようなファイルが複数あります(textX.txt)。 最初の数字は桁数によってスペースの数が変わっています。 ファイルによって数字とそののちのTRXが変わってきます。 さらにTRXについてはあるファイルでは出てきたりでてこなかったりします。 このファイルをまとめたいと考えています。 その際にlist.txtを使ってoutput.txtのようにまとめていきたいです。 textX.txtででてこないものは0としたいです。 testX.txtは増減する可能性があるので、いくつでも対応できるものがありがたいです。 この作業をできるperlスクリプトを考えています。 rubyやpythonなどでも構いません。 複雑な作業ですが、これを解決するスクリプトをご教授いただけないでしょうか? エクセルでは処理できず困っています。 text1.txt 4 TR5|c0_g1_i1 1 TR6|c0_g1_i1 4 TR7|c0_g1_i1 14 TR7|c1_g1_i1 626 TR8|c0_g1_i1 517 TR8|c0_g2_i1 7 TR9|c0_g1_i1 2 TR9|c0_g2_i1 4 TR9|c1_g1_i1 list.txt TR5|c0_g1_i1 TR6|c0_g1_i1 TR7|c0_g1_i1 output.txt text1 text2 text3 TR5|c0_g1_i1 4 0 6 TR6|c0_g1_i1 1 5 1 TR7|c0_g1_i1 4 5 0

  • Perl 文字変換

    Perlで全角英数字を半角英数字に変換させたいのですが、 Jcodeを使わずにできる方法を教えてほしいです。 例えば zenkaku→zenkaku のようにです。 $value=~ s/$a\xA3([\xB0-\xB9\xC1-\xDA\xE1-\xFA])$b/pack("C", ord($1) - 0x80)/oeg; こういうのを試してみたのですが、上手く行きませんでした・・・

    • ベストアンサー
    • r-h-a-o
    • Perl
    • 回答数2
  • Perl 文字コードについて

    From: $from To: $mailto CC: $mailcc Subject: $subject Mime-Version: 1.0 Content-type: text/plain;charset=\"UTF-8\" Content-Transfer-Encoding: 8bit この時点で、UTF-8を指定しました。 use Encode; use Encode::Guess; Encode::Guess->set_suspects( qw/ euc-jp shiftjis 7bit-jis / ); $name = encode('UTF-8', decode('Guess', $name)); で本文を、UTF-8に変換して送るようなコードを書きました。 これで一応、パソコン、スマホ共に「本文」は文字化けせず送れるのですが、 今度、別の問題が発生してしまったようで、 「件名」が文字化けしてしまうようになりました。 $subject = encode('UTF-8', decode('cp932', $subject)); 件名も、本文と同じように変換コードをしてみたところ、パソコンでは文字化けしませんでしたが「件名」で文字化けしてしまいます。 調べたところ本文と件名では、内容が違い MIMEエンコードを使用するとのことだったのですが、 実際どのように使うのかわからないです。 $subject = encode('ISO-2022-JP', decode('cp932', $subject)); encode('MIME-Header-ISO_2022_JP', $subject) このように記述するとスマホでは文字化けしないのですが パソコンで文字化けしてしまいます。 そこで、件名がパソコンとスマホで文字化けしないようにし、本文はUTF-8で送るようにするにはどのようにすればいいのでしょうか?

    • ベストアンサー
    • r-h-a-o
    • Perl
    • 回答数2
  • Perl メール文字化け

    #メール本体設定 my $start = '~ホームページより以下の内容を受け取りました~'; my $Name =$q->param('Name'); if($Name eq ""){ print "Content-type: text/plain; charset=Shift_JIS\n\n"; print "名前が入力されていません。\n\nブラウザの戻るボタンで戻ってください。"; exit(1); } my $Sex =$q->param('q1'); my $Age =$q->param('q2'); my $ie =$q->param('ie'); my $Tell =$q->param('Tell'); my $body = $q->param('body'); if($body eq ""){ print "Content-type: text/plain; charset=Shift_JIS\n\n"; print "本文が入力されていません。\n\nブラウザの戻るボタンで戻ってください。"; exit(1); } #my $subject = $q->param('subject'); my $End = '~~~~~~~~~~~~~~~~~~~~~'; #メール送信オブジェクト設定 my $smtp = Net::SMTP->new('n-doboku.jp'); if ( !$smtp ) { print "メールサーバーにアクセスできません!"; exit; } #メール文字コード変換 Encode::from_to($start, 'shiftjis', 'iso-2022-jp'); Encode::from_to($Name, 'utf8', 'shiftjis'); Encode::from_to($Sex, 'utf8', 'shiftjis'); Encode::from_to($Age, 'utf8', 'shiftjis'); Encode::from_to($ie, 'utf8', 'shiftjis'); Encode::from_to($Tell, 'utf8', 'shiftjis'); Encode::from_to($body, 'utf8', 'shiftjis'); Encode::from_to($End, 'shiftjis', 'iso-2022-jp'); #メール送信 $smtp->mail($from); $smtp->to($mailto); $smtp->to($mailcc); $smtp->data(); $smtp->datasend($header); $smtp->datasend("$start\n\n"); $smtp->datasend("名   前 : $Name\n\n"); $smtp->datasend("性   別 : $Sex\n\n"); $smtp->datasend("年   齢 : $Age\n\n"); $smtp->datasend("住   所 : $ie\n\n"); $smtp->datasend("電話番号 : $Tell\n\n"); $smtp->datasend("本   文 : $body\n\n"); $smtp->datasend("$End\n\n"); $smtp->dataend(); $smtp->quit; 現在、 SMTPを使用しメール送信を作成している最中です。 やっと、パソコンからパソコンへメール送信では文字化けしなくなったのですが まず (1)パソコンでも異字体などは文字化けしてしまう(髙や﨑等) おそらく「Content-Transfer-Encoding: 8bit」これを使うのですが、使いかたがわからないです・・・ (2)スマホにメール送信したときはすべて文字化けしてしまうのですが、 スマホでの文字コードとはなんなのでしょうか・・・? また、一回utf8に変換しているのですが、この場合どうするのでしょうか・・・?

    • ベストアンサー
    • r-h-a-o
    • Perl
    • 回答数4
  • perlでサブルーチンへの複数の配列渡し

    perlでサブルーチンに配列を渡しているのですが、 引数としている配列が1個の場合は問題ないのですが、 複数渡すと、第2引数以降が渡りません。 どの様にすれば上手くできますか。 例1 #!/usr/bin/perl @x1 = (14, 11, 5, 12, 8, 15); @x2 = (12, 10, 8, 9); print "main : @x1 \n"; &test(@x1); sub test { my (@arg1) = @_; print "sub : @arg1 \n"; } 結果 main : 14 11 5 12 8 15 sub : 14 11 5 12 8 15 例2 #!/usr/bin/perl @x1 = (14, 11, 5, 12, 8, 15); @x2 = (12, 10, 8, 9); print "main : @x1 \n"; print "main : @x2 \n"; &test(@x1, @x2); sub test { my (@arg1, @arg2) = @_; print "sub : @arg1 \n"; print "sub : @arg2 \n"; } 結果 main : 14 11 5 12 8 15 main : 12 10 8 9 sub : 14 11 5 12 8 15 12 10 8 9 sub : 引数1に全てが設定されて、引数2に設定されていない。

    • ベストアンサー
    • abc999xyz
    • Perl
    • 回答数2
  • Perl メール フォーム

    ホームページのメールフォームについて教えてください。 現在ホームページで、お問い合わせページを作っている最中です。 そこで、現在下記のコードまでできております。 #!/usr/bin/perl -w use Encode qw(from_to encode); use Net::SMTP; use strict; use warnings; use Encode; use CGI; my $p = new CGI; #メールアドレス設定 my $from = 'aaaa@aaaaa.jp; my $mailto= 'aaaa@aaaaa.jp; my $mailcc= 'aaaa@aaaaa.jp; #サブジェクト設定 my $subject = 'ホームページからのお問い合わせ'; from_to($subject, 'shiftjis', 'iso-2022-jp'); encode('MIME-Header-ISO_2022_JP', $subject); #メールヘッダー設定 my $header = << "MAILHEADER"; From: $from To: $mailto CC: $mailcc Subject: $subject Mime-Version: 1.0 Content-Type: text/plain; charset = 'ISO-2022-JP" Content-Trensfer-Encoding: 7bit MAILHEADER #メール本体設定 my $message = "a"; #my $subject = $p->param('subject'); #文字コードをJISに変換 from_to($message, 'shiftjis', 'iso-2022-jp'); #メール送信オブジェクト設定 my $smtp = Net::SMTP->new('aaaaaaa.jp'); if ( !$smtp ) { print "メールサーバーにアクセスできません!"; exit; } #メール送信 $smtp->mail($from); $smtp->to($mailto); $smtp->to($mailcc); $smtp->data(); $smtp->datasend($header); $smtp->datasend($message); $smtp->dataend(); $smtp->quit; これだと、ホームページのボタン等をクリックすると メールは送られます。 差出人が'aaaa@aaaaa.jp 件名がホームページからのお問い合わせ 内容がa です。 これは、コード内にこう書いているから必然的にこれがくるわけなのですが、 そうではなく、 ホームページでお問い合わせボタンがありそこに <a href="http://aaaaaa.jp/cgi/mailform.pl"><img src="img/share/mail.gif" width="100" height="50" alt=""></a> mailform.plもしくはmeilform.htmlを表示させ下記のコードで表示されるページにアクセスし #!/usr/bin/perl <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>メールフォーム</title> </head> <body> <h1 class="title">メールフォーム</h1> <form method="post" action="mail.pl"> <input type="hidden" name="a" value="exec"> 件名(Subject) :<br /> <input type="text" name="subject" size="80" value=""><br /> 宛先(To) :<br /> <input type="text" name="to" size="80" value=""><br /> 差出人(From) :<br /> <input type="text" name="from" size="80" value=""><br /> 本文(Body) :<br /> <textarea name="body" rows="10" cols="65"></textarea><br /> <p> <input type="submit" value="送信"> </p> </form> </body> </html> ここで 差出人、件名、内容を入力し、送信のボタンを押すと my $subject = 'ホームページからのお問い合わせ'; my $message = "a"; my $from = 'aaaa@aaaaa.jp; この3つをmailform.plもしくはmailperl.htmlで 入力した内容で送信をしたいのですが、 これのやり方を教えてほしいです。。。 当方ホームページ作りも初心者で、Perlも最近はじめたとこでまだ理解できていないとこも 多いため説明がわかりにくいかもしれません・・・ その時は、ご指摘ください;; また、業者に頼むことは考えておりません・・・ 参考書やいろいろネットサーフィンしてみたのですが、上手くできません どうかお力添えをお願い致します!

    • ベストアンサー
    • r-h-a-o
    • Perl
    • 回答数2
  • Perl で File::Find できない

    Perl 初心者です。Windows 上で、親ディレクトリを ARGV に引き渡してすべてのサブディレクトリを再帰的に処理するスクリプトを作成しましたが、名前に「表」の漢字が含まれているディレクトリだと、処理が失敗します(その他のディレクトリでは正常に動作します)。調べたところ、以下のサイトで指摘されている問題らしく、いろいろと書き直しては見たのですがうまく動きません。ご教示いただけないでしょうか。 参照したサイト -------------- 「WindowsのPerlで日本語パス名を処理すると0x5C文字でつまずく」 http://raven.air-nifty.com/night/2009/12/windowsperl0x5c.html 作成したスクリプト(抜粋) ------------------------- my $top_dir = $ARGV[0]; find( \&hogehoge, $top_dir );

  • perl サブルーチンでのファイル出力結果おかしい

    以下のコードを実行するとカレントディレクトリの配下にある すべてのファイルのリストがコンソールとファイルに出力される はずですが、コンソールに表示されているファイルの一部しか ファイルに出力されていません。 どうも、最後に do_file()を呼び出したときのファイルしか リストされていないようなのですがなぜでしょうか。 どのようにすればよいのでしょうか。 よろしくお願いします。 (Windows7, ActivePerl(v5.16.3)) ----test.pl--------------------------------------------- &do_dir('.'); sub do_dir{  open(FILE2,'>list.txt') or die "$!";  my $dirname=shift;  my $delim='/';  opendir(DIR,$dirname) or die "$!";  foreach $entry (readdir(DIR)){   next if($entry eq '.');   next if($entry eq '..');   if ($dirname=~/[\\\/]$/) {    my $delim='';   }   my $filename="$dirname$delim$entry";   if(-d $filename){    &do_dir($filename);   } else {    &do_file($filename);   }  }  close(DIR);  close(FILE2); } sub do_file{  my $filename=shift;  return unless ($filename=~/\.*$/);  print "$filename\n";  print FILE2 "$filename\n"; }

    • ベストアンサー
    • yam2012
    • Perl
    • 回答数2
  • ブックマーク用のサイトを作りたいのですが

    【ブックマークを整理するためのサイトを作りたい】 掲示板のように更新できるものを作ろうと思っています。 ローカルで動かせる、またはCGIなどを使ってサーバーサイドで動かせるような ものがいいと思っています。 ★スマホでみられる ★視覚的にわかりやすくお気に入りのサイトを逡巡できる (サムネでわかりやすくしたいです。) ★レイアウトはHTMLやCSSなどで整えることができる ★スマホでも見られる 現時点でHTML、javasscript、CSSしか今のところわかりません。 他になにからやったらいいのか見当もつかないので、こちらでご教授いただけたら と思って質問します。 (1)上記のサイトを作る場合  2016年時点の今の主流として言語はどれを使うのが適当ですか? (2)解説本とかサイトとか参考になるものを教えていただけると幸いです

  • cgi(perl)でパラメータが渡せない

    以下のプログラムでnum=9が伝わらないので、ミスをご指摘ください。 グラフィカルなアクセスカウンタを表示させようとしていますが うまくいかないのでテキストモードでデバッグしています。 [ /usr/local/apache2/htdocs/gif-view.html ] <html> <head> <meta http-equiv="Content-type:" content="text/html; charset=UTF-8"> <title>gif-view</title> </head> <body> <iframe src="/cgi-bin/gif-test.cgi?num=9"></iframe> <!-- <img src="/cgi-bin/gif-test.cgi?0" width=50 height=50> --> </body> </html> [ /usr/local/apache2/cgi-bin/gif-view.cgi ] permission は 755 にしています。 #!/usr/bin/perl print "Content-Type: text/plain;\n\n"; print "gif-test.cgi\n"; $prm0 = @ARGV[0]; if($prm0 = "") { print "Param is exist\n"; } else { print "Param is empty\n"; 実行結果として gif-test.cgi Param is empty となります。 httpd.conf で Script Alias /cgi-bin/ "/usr/local/apache2/cgi-bin/" を有効にしています。

    • ベストアンサー
    • junh1109
    • Perl
    • 回答数1
  • Perl メールフォーム

    Perl勉強中です。ご教示お願いします。 #!/usr/bin/perl -w use Encode qw(from_to encode); use Net::SMTP; use strict; my $from = 'xxxx@xxxxx.jp'; my $mailto= 'xxxx@xxxxx.jp'; my $mailcc= 'xxxx@xxxxx.jp'; my $subject = 'ホームページからのお問い合わせ'; from_to($subject, 'shiftjis', 'iso-2022-jp'); encode('MIME-Header-ISO_2022_JP', $subject); my $header = << "MAILHEADER"; From: $from To: $mailto CC: $mailcc Subject: $subject Mime-Version: 1.0 Content-Type: text/plain; charset = 'ISO-2022-JP" Content-Trensfer-Encoding: 7bit MAILHEADER my $message = "テスト"; from_to($message, 'shiftjis', 'iso-2022-jp'); my $smtp = Net::SMTP->new('xxxx-xxxx.jp'); if ( !$smtp ) { print "メールサーバーにアクセスできません!"; exit; } #メール送信 $smtp->mail($from); $smtp->to($mailto); $smtp->to($mailcc); $smtp->data(); $smtp->datasend($header); $smtp->datasend($message); $smtp->dataend(); $smtp->quit; 現在ここまでできています。 「ホームページ→お問い合わせクリック→メール送信」 そして、今回教えていただきたいのが、 イメージなのですが、 ホームページ→お問い合わせクリック→メールフォームのページに移動→内容入力 →確認ボタンクリック→確認画面→送信ボタンクリック→送信+送ってきた人へ自動返信(定型文) という風にしたいのですが、どうすればいいのかわかりません・・・ できればコードを教えて頂ければ嬉しいです。

    • ベストアンサー
    • r-h-a-o
    • Perl
    • 回答数1
  • perl $b=$a=~/パターン/

    perlで $b=$a=~/パターン/; ($b)=$a=~/パターン/; のような表現をまれにみかけるのですが、 $b=$a=~/パターン/; の$bには何が得られるのでしょうか。 どんなときに使うのでしょうか。 ($b)=$a=~/パターン/; に/g修飾子を付けると 何も得られなくなってしまいますが なぜでしょうか。 例えば、 (1)のように $bには1が入っているので最初は /\d\d\d/に一致した数が 得られているのかと思ったのですが、 (2)のようにしても1のままです。 また、(3)のようにしてみても1のままです。 $bには何が得られるのでしょうか。 (4)では$bに1つ目の(\d)にマッチした結果が、 $cに2つ目の(\d)にマッチした結果が 入っているのでこれは理解できますが、 (5)のようにgを付けると、$b,$cには 何も入らなくなってしまいますが なぜでしょうか。 $a=~/(\d)\d(\d)/g;からは、 (1,3,4,6)のリストが返されて、 このリストの頭の2つの要素(1と3)が ($b,$c)に得られるのではないのでしょうか。 (1) my $a='a123b456c'; my $b=$a=~/\d\d\d/; my $c; print "$b\n";---> 1 (2) $b=$a=~/\d\d\d/g; print "$b\n";---> 1 (3) $b=$a=~/(\d)\d(\d)/g; print "$b\n";---> 1 (4) ($b,$c)=$a=~/(\d)\d(\d)/; print "$b $c\n";---> 1 3 (5) ($b,$c)=$a=~/(\d)\d(\d)/g; print "$b $c\n";--->空白 よろしくお願いします。 Windows7 , ActivePerl(v5.16.3)

    • ベストアンサー
    • yam2012
    • Perl
    • 回答数1
  • perlのdo-while文で抜け出せない 

    perlのwhile,do-while,last文に関する質問です。 1) code1のようなプログラムを作ったのですが   eでdo_whileを抜け出すことができませんがなぜでしょうか。 ---code1(eで抜け出せない)(NG)--- my $sum=0; do{  my $a=<STDIN>;  chomp($a);  $sum=$sum+$a; }while($a ne 'e'); print $sum; -------------------------------- 2) 抜け出す方法をいろいろ試していたら   while(1)にしてlastで抜けるようにすると   code2ではeで抜け出すことができるように   なりましたが、   do~while(1)にしたcode3では、  「Can't "last" outside a loop block at …」C   というエラーが発生します。   code2とcode3はwhileがdo~whileになって   条件を見る位置がループの始めか終わりの   違いだけなのに、なぜ、code2ではOKで、   code3ではエラーになるのでしょうか。 ---code2(eで抜け出せる)(OK)----- my $sum=0; while(1) {  my $a=<STDIN>;  chomp($a);  last if ($a eq 'e');  $sum=$sum+$a; }; print $sum; --------------------------------- ---code3(エラーになる)(NG)----- my $sum=0; do{  my $a=<STDIN>;  chomp($a);  last if ($a eq 'e');  $sum=$sum+$a; }while(1); print $sum; --------------------------------- よろしくお願いします。 Windows7 , ActivePerl(v5.16.3)

    • ベストアンサー
    • yam2012
    • Perl
    • 回答数2
  • スクリプト実行言語にPerlを指定する方法

    ubuntu で (1)apache2 をインストール (2)peal をインストール しました。 その後、スクリプト実行言語にPerlを指定する方法がよくわからなく困っています。 ネットを見ながらやっていますが、スクリプト実行言語にPerlを指定する方法がわかれば先に進めます。どうやればいいのでしょうか?

  • 『!~!』っていうのは、どのような意味

    下記のような『!url!』の『!~!』っていうのは、どのような意味なんでしょうか。 Perl Html ともに初心者です。 -------------------------------------------------------------------------------------- Perl-------------------- $tmpl =~ s/!url!/$cook[2]/; HTML------------------ <th>参照先</th> <td><input type="text" name="url" value="!url!" class="reg-url" /></td>

  • perlのsystem関数でrsyncが動かない

    perlのsystem関数を使って、外部サーバーのフォルダ(999)をバックアップしたいと思っています。 公開鍵を設定して、コマンド入力では動きます。 $ rsync -av user1@xxx.xxx.xxx.xxx:/home/user1/public_html/hp/999 /home/user2/public_html/hp/ これをperlのsystem関数に入れると動きません。 $retcodeは-1になります。 apacheのエラーログには何も出ていません。 何が原因で動かないのでしょうか? よろしくお願いします。 #!/usr/bin/perl $retcode=system ("rsync -av user1@xxx.xxx.xxx.xxx:/home/user1/public_html/hp/999 /home/user2/public_html/hp/"); print "Content-type: text/html\n\n"; print"code: $retcode"; exit;

    • ベストアンサー
    • yo3708
    • Perl
    • 回答数2
  • ファイルの読み込み処理が上手くいきません。

    aaaフォルダ配下のファイルfruits.csv(タブ区切り2列)の1列目の内容が@dbline[1]の内容と等しいものについて、2列目の内容を$Hinmeiに取り出すプログラムを以下のように作成しましたが、他の変数の領域を壊しているようです。何が問題なのかご教示下さい。 因みにif文を何個も使用して条件に合うものの品名を取り出すことはできますが、if文が増えてしまい、見栄えが良くありません。 open (FILE,"../aaa/fruits.csv”); while (<FILE>){ chomp $_; @data=split(/\t/,$_); if(@dbline[1] eq @data[0]) { $Hinmei=$data[1]; last; } } close(FILE);

  • W10でhtmlのソースが編集できない

    W7のユーザです。このたび、意図せずにW10に変わってしまいました。 使い勝手はまだ納得しておりません。以前、W7だった時には、表示タブの、<ソースを表す>でHTMLファイルを編集できたのですが、W10 では、書き込みができません。ちなみに窓の杜のFTPや、秀丸も使っていました。どのようにしたらよいか、教えてください

  • 全てのjpgファイルを一つ上の階層に移動したいです

    ネットワークカメラの設定で年月日時分秒を利用してjpgファイルが 以下の様にUPされます。 ./www/hoge/20160309/19/194512_1.jpg ./www/hoge/20160309/19/194512_2.jpg ./www/hoge/20160309/20/203317_1.jpg ./www/hoge/20160309/21/214055_1.jpg ./www/hoge/20160310/07/070503_1.jpg ./www/hoge/20160310/07/082235_1.jpg 時間だけを表している2桁数字のフォルダが邪魔なので、jpgファイル 全てを一括で一階層上の年月日8桁の数字フォルダ内に移動するには、 どのように記述すれば良いかご教示お願いします。 ネットワークカメラは24時間作動しているので、手動で移動するのは 面倒です。どうぞ宜しくお願いします。