kumoz の回答履歴

全323件中201~220件表示
  • サブルーチンの返値に配列のハッシュ

    いつもお世話になっております。 HTML::Templateを使用する為、サブルーチンの返値に配列のハッシュを入れたいと思っていますが、うまくいきません。 また、myの使い方が分からず、返値までの方法も若干気になります。 よろしくお願い致します。 use HTML::Template; @loop = &loop_make('aa<>ab<>ac','ba<>bb<>bc','ca<>cb<>cc'); my $template = HTML::Template->new(filename=>'sample.html'); $template->param(loop=>\@loop); print "Content-Type: text/html\n\n"; print $template->output; exit; sub loop_make{ @aaa = (); foreach $xxx (@_) { ($one,$two,$three) = split(/<>/,$xxx); push @loop, { one => $one, two => $two, three => $three }; } return \@aaa; }

  • HTML::Templateのループと配列のハッシュの作成

    下記の?????の所にpushで配列のハッシュを作成しようと考えていましたが、うまくいきません。 下記のソース自体が的外れでしたら申し訳ございません。?????以外の場所も指摘して頂ければ幸いです。 よろしくお願い致します。 <TMPL_LOOP NAME="loop"> <TMPL_VAR NAME="one"><BR> <TMPL_VAR NAME="two"><BR> <TMPL_VAR NAME="three"><BR> </TMPL_LOOP> use HTML::Template; @data = ('aa<>ab<>ac','ba<>bb<>bc','ca<>cb<>cc'); foreach $xxx (@data) { my ($one,$two,$three) = split(/<>/,$xxx); ???????????????????? } my $template = HTML::Template->new(filename=>'sample.html'); $template->param(loop=>\@loop); print "Content-Type: text/html\n\n"; print $template->output;

    • ベストアンサー
    • sfgfsherg
    • Perl
    • 回答数3
  • 複数のCSVファイルを1つの表にして出したい

    あるCSVファイルを、Perl+HTMLで、プラウザに「表」で表示させるようにしました。 しかし、追加で複数のCSVファイルを読み込ませて、同じ表に入れることができません。(今ある表のなかの、$r1,2,3と番号が存在してる以外の空欄になっている表に入れたいのです) どのようにすればいいのか、どなたかお教え下さい!>< ちなみに、今作ってあるものはこんなかんじです。 動作確認済み。 #!/usr/local/bin/perl #----------------------------------- $file = "a.20090504.csv"; #----------------------------------- print "Content-type: text/html\n\n"; print "<html>\n"; print "<body>\n"; print "<br><br>\n"; print "<center>\n"; print "<table border=1 >\n"; $days = $file; $days =~ s/a.//g; $days =~ s/.csv//g; open(IN,"$file"); @kasou = <IN>; close(IN); foreach $line (@kasou){ ($r1, $r2, $r3, $r4, $r5, $r6, $r7) = split (/,/, $line); print "<tr>\n"; print "<td>$days</td>\n"; print "<td>$r1</td>\n"; print "<td></td>\n"; print "<td>$r2</td>\n"; print "<td></td>\n"; print "<td></td>\n"; print "<td>$r3</td>\n"; print "<td></td>\n"; print "<td></td>\n"; print "<td>$r4</td>\n"; print "<td>$r5</td>\n"; print "<td>$r6</td>\n"; print "<td>$r7</td>\n"; print "</tr>\n"; } print "</table>\n"; print "</body>\n"; print "</html>\n"; ※ちなみに、これですとCSVファイル名の20050504だけがtrに入るようになっています。これは、こうしたいのでこうしているのですが、繰り返しtrに投入されるようになっているのも気になります。 どうしたら直るでしょうか。

    • 締切済み
    • 05ks
    • Perl
    • 回答数3
  • 3バイト文字を書きだしたい

    恐れ入ります。 表題の通りなのですが、うまく出来ません>< 3バイト文字の判定が \x8F[\xA1-\xFE][\xA1-\xFE] ということでしたので、 試しに以下のようにしてみたのですが、ダメでした。 for ( 161 .. 254 ){ my $tmp=sprintf("\x8f\xa1\x%x", $_); print $tmp; } 【結果】 a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfe

    • ベストアンサー
    • azicyan
    • Perl
    • 回答数3
  • 3バイト文字を書きだしたい

    恐れ入ります。 表題の通りなのですが、うまく出来ません>< 3バイト文字の判定が \x8F[\xA1-\xFE][\xA1-\xFE] ということでしたので、 試しに以下のようにしてみたのですが、ダメでした。 for ( 161 .. 254 ){ my $tmp=sprintf("\x8f\xa1\x%x", $_); print $tmp; } 【結果】 a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfe

    • ベストアンサー
    • azicyan
    • Perl
    • 回答数3
  • apache2.2で画像が表示されません。

    webサーバーをたて、HPを作ろうとしているのですが、テンプレート中で読んでいる画像が表示されません。 apache2.2でhtmlファイルで<img src="パス">で読んでいるだけなのですがブラウザで表示されません。 パスの設定ミス意外で表示できない理由は何かあるのでしょうか? ご教授のほどお願い致します。

  • apache2.2で画像が表示されません。

    webサーバーをたて、HPを作ろうとしているのですが、テンプレート中で読んでいる画像が表示されません。 apache2.2でhtmlファイルで<img src="パス">で読んでいるだけなのですがブラウザで表示されません。 パスの設定ミス意外で表示できない理由は何かあるのでしょうか? ご教授のほどお願い致します。

  • apache2.2で画像が表示されません。

    webサーバーをたて、HPを作ろうとしているのですが、テンプレート中で読んでいる画像が表示されません。 apache2.2でhtmlファイルで<img src="パス">で読んでいるだけなのですがブラウザで表示されません。 パスの設定ミス意外で表示できない理由は何かあるのでしょうか? ご教授のほどお願い致します。

  • コンビネーション(例:5C3)の実現には…

    Perlのスクリプトを書いている中で、Out of Memoryに悪戦苦闘しているものです。 多次元配列同士を掛け合わせて、文字列を生成するプログラムを作成しています。 -以下スクリプト- @list = (["りんご","みかん","レモン"],      ["ジュース","サイダー","リキュール","酒","スープ","アイス","キャラメル"],      ["クレープ","パイ","ケーキ","スイーツ","チャンプルー"],      ["~","…","・"],      ["1人前","200g","1000円分","山盛り","ちょっと","一皿"]); $count=0; for(@{$listy[0]}){   $seed[$count] = $_;   $count++; } $count=0; for($i=1; $i<@listy; $i++){   for($j=0; $j<@{$listy[$i]}; $j++){     for($k=0; $k<@seed; $k++){       $tmp[$count] = $seed[$k] . $listy[$i][$j];       $count++;     }   } @seed = @tmp; $count = 0; } print join("\n",@tmp)."\n"; -ここまで- 動作結果: りんごジュースクレープ~1人前 みかんジュースクレープ~1人前 … こんな感じで、前から順番に総当りをしていくようにして文字列を生成する方法をとっているのですが、 これを配列の内、3つだけ取り出して文字列を繋げるようなスクリプトに変更するにはどうしたらよろしいでしょうか。 例1:りんごジュース山盛り 例2:ジュース…1人前 どなたかご助力頂ければ嬉しい限りです。宜しくお願い致します。m(_ _)m

  • 2次元ハッシュ または 2次元配列をソートしたい

    2次元ハッシュのソートをしたいです。 ハッシュは2つのキーを使用していて、 1つ目のキーは文字列、2つ目のキーは数字(0からの連番)です。 ハッシュの中身は文字列が入っています。 これを次のような表に見立てて、特定の列でソートしたいのです。 hash['a']['0'], hash['a']['1'], ..., hash['a']['50'], hash['q']['0'], hash['q']['1'], ..., hash['q']['50'], hash['c']['0'], hash['c']['1'], ..., hash['c']['50'], ... hash['d']['0'], hash['d']['1'], ..., hash['d']['50'], 例えば 6列目の値によってソートするということです。 以下のようにソートしようとしましたが、うまくいきません。 my @sorthash = sort { $a->[6] <=> $b->[6] } @hash; 何かヒントがあれば教えてください。

    • ベストアンサー
    • palayo
    • Perl
    • 回答数6
  • LWPでHTMLが取得できないことがある

    LWPを使ってHTMLを取得しようとしているのですが、取得可能のサイト、不可能のサイトがあります。 たとえばyahooのトップページは取得できますが、wikipediaは取得できません。取得できない場合、エラーメッセージは出ません。 このようになる理由を教えてください。 よろしくお願いいたします。 環境:windowsXP & ActivePerl、またはwindowsXP & cygwin コード: #wikipediaのトップページHTMLを取得する use LWP::Simple; $site = get "http://ja.wikipedia.org/wiki/%E3%83%A1%E3%82%A4%E3%83%B3%E3%83%9A%E3%83%BC%E3%82%B8"; print $site; #yahooのトップページHTMLを取得する use LWP::Simple; $site = get "http://www.yahoo.co.jp/"; print $site;

  • splitがうまくできません。

    下記は数の大きい順に並び替えるスクリプトです。 if($numberw lt $numberh)の行で"use of uninitialized value in string lt"というエラーが出るので $numberwと$numberhの中身を調べたところsplit後に値が入ってなく、なぜうまく入らないのかわかりません。@emojiの内容は 1<> \$G! <>80 2<> \$G" <>50 3<> \$G# <>273 4<> \$G\$ <>80 5<> \$G% <>50というのが400行ほど続きます if(!open(READ,"<./emoji/emoji_sb.txt")){ die "ファイルがないです"; } flock(READ,1); @emoji=<READ>; close(READ); while(1){ while($emoji[$i]){ (undef,undef,$numberw)=split(/<>/,chomp($emoji[$i])); (undef,undef,$numberh)=split(/<>/,chomp($emoji[$j])); if($numberw lt $numberh){ $emoji=$emoji[$i]; $emoji[$i]=$emoji[$j]; $emoji[$j]=$emoji; $flag=1; } $i++; $j++; } if(!$flag){ last; } $i=0; $j=1; $flag=0; } close(READ); わかる方よろしくお願いいたします。

    • ベストアンサー
    • noname#178821
    • Perl
    • 回答数2
  • #!/usr/local/bin/perlで命令が出せません。

    プログラミングのド素人で、独学でwindows上でcygwinを使っている者から質問させていただきます。「#!/usr/local/bin/perl」というコマンドをプログラムの先頭に書いて、[ファイル名]を入力してcygwinで命令をしたところ、命令が実行できず、「commond not found」と出てしまいました。そこで、ネット上で、いろいろ調べて、試してみたのですが、どうしても、解決できません。 どなたか、アドバイスをいただけないでしょうか? ちなみに、perl [ファイル名]では、命令を実行することができます。「type -a perl」というコマンドを入力すると、「/cygdrive/c/Perl/bin/perl」というのがでてきたので、「#!/cygdrive/c/Perl/bin/perl」というコマンドを書いても上手くいきませんでした。 ちなみに、私が書いたプログラムは、以下のようなものです。 #!/cygdrive/c/Perl/bin/perl (あるいは#!/usr/local/bin/perl) # hello -- 挨拶のプログラム print ("hello");

  • 特定の文字列の抽出について

    GGACTTTCA・・・のようにゲノム塩基配列の一部が記してあるファイルから、4個の文字列に、それを逆順にした文字列が続いたもの(CCAGGACC、TGCCCCGTなど)を抽出したプログラムを作成したいのですが、上手く結果が出力できません。 おそらく、最初の任意の4文字を配列に入れ、後半の4つの部分に逆にして入れると思いました。ですが、配列に入れる方法、配列に入れた文字を逆に出力する方法、文字を4つ(もしくは8つ)に限定する方法がわからず、プログラムが動きません。 方法について、意見アドバイス等よろしくお願いします。

    • ベストアンサー
    • hatouiru
    • Perl
    • 回答数3
  • #!/usr/local/bin/perlで命令が出せません。

    プログラミングのド素人で、独学でwindows上でcygwinを使っている者から質問させていただきます。「#!/usr/local/bin/perl」というコマンドをプログラムの先頭に書いて、[ファイル名]を入力してcygwinで命令をしたところ、命令が実行できず、「commond not found」と出てしまいました。そこで、ネット上で、いろいろ調べて、試してみたのですが、どうしても、解決できません。 どなたか、アドバイスをいただけないでしょうか? ちなみに、perl [ファイル名]では、命令を実行することができます。「type -a perl」というコマンドを入力すると、「/cygdrive/c/Perl/bin/perl」というのがでてきたので、「#!/cygdrive/c/Perl/bin/perl」というコマンドを書いても上手くいきませんでした。 ちなみに、私が書いたプログラムは、以下のようなものです。 #!/cygdrive/c/Perl/bin/perl (あるいは#!/usr/local/bin/perl) # hello -- 挨拶のプログラム print ("hello");

  • ハッシュのリファレンスを用いた処理

    ActivePerl 5.8 , WinXP SP2の環境です。 Perl スクリプトを用い、ファイルから複数のブロックからなる情報をよみとり、個別のハッシュを作り、それをリファレンスの配列としてまとめて後から参照するという操作をしたいのですが、詰まってしまいました。。 例として読み取るファイルは ---input.txt--------- >1 Jan 1 Feb 4 >2 Mar 9 Apr 3 >3 Oct 8 Nov 4 ------------------ ここから1,2,3の個別のハッシュ {Jan => 1 Feb => 4} {Mar=> 9 Apr =>3} {Oct =>8 Nov =>4} を作成し、それぞれのハッシュのリファレンスの配列をつくり、その後からすべてのハッシュの中身を個別に出力させたいと思いました。 次のようなスクリプトを作成したのですが思ったように作動しません。 use strict; open (IN, "input.txt") or die ("cant open file \n"); my $reff; my @array_of_reff; my %hash; my $count = 0; while(<IN>){ my $line = $_; ######ここでは各ブロックの頭の ">"を認識し、2個目以降であれば直前までで作ったハッシュのリファレンス($reff)を配列@array_of_reffに入れる。 if($line =~ /^>/){ if($count >0){ $reff = \%hash ; push (@array_of_reff, $reff); %hash = (); } $count++; } ########ここではアルファベットが入った行を認識して、ハッシュに追加しています if($line =~ /^[A-Za-z]/){           $line =~ /([A-Za-z]+)\s+/; my $month = $1; $line =~ /\s+(\d+)/; my $day= $1; $hash{$month} = $day;     } ###ここはファイルの最後になったら直前まで作っていたハッシュののリファレンス($reff)を配列@array_of_reffに入れる。 if( eof ){ $reff = \%hash ; push (@array_of_reff, $reff); } } #####ハッシュのリファレンスの配列(@array_of_reff)からもとのハッシュを参照し、ハッシュごとに出力 foreach my $reff_of_hash (@array_of_reff){    print "output";    while( (my $key,my $value) = each %$reff_of_hash ){     print "\n" , $key, " : ", $value, ;    } } このスクリプトを実行すると Nov 4 Oct 8 という3つめのハッシュのなかみが3回出力されてしまいます。自分では3つの別のハッシュをつくっているつもりでも、どうやら1種類しか作れていない、もしくはハッシュが上書きされているようなのですが、原因がわかりません。 この例だけ見るとハッシュのリファレンスを使う必要はないのですが、実際にはもうすこし大きいスクリプトで"ハッシュのリファレンスの配列を他のサブルーチンに渡す"ということを想定しており、これが解決できず先に進めない状態です。 アドバイス、解決法がわかったら教えていただけないでしょうか。

    • ベストアンサー
    • hydrozoa
    • Perl
    • 回答数1
  • RFC822形式の日付を生成するサブルーチン

    メールのヘッダー部分に設定するRFC822形式の日付を生成するサブルーチンを探しているのですが、どこかにないでしょうか? 次のような形式です。 Fri, 28 Nov 2008 20:30:50 +0900

    • ベストアンサー
    • goonejp
    • Perl
    • 回答数2
  • CGI.pmでラジオボタンを思い通り表示できない

    <INPUT TYPE="radio" NAME="bread" VALUE="wheat" CHECKED> 小麦パン<BR> <INPUT TYPE="radio" NAME="bread" VALUE="white"> 白パン<BR> <INPUT TYPE="radio" NAME="bread" VALUE="rye"> ライ麦パン<BR> CGI.pmでこれと同じ出力をするにはどうすればよいのですか。 解説サイトなどを見よう見まねで作った私のソースは次のとおりです。 #!/usr/bin/perl use CGI(-no_xhtml); my($q) = CGI->new; print( $q->header(-charset => "EUC-JP"), $q->radio_group(-name => "bread", -value => "wheat", -checked), " 小麦パン", $q->br, "\n", $q->radio_group(-name => "bread", -value => "white"), " 白パン", $q->br, "\n", $q->radio_group(-name => "bread", -value => "rye"), " ライ麦パン", $q->br ) これの出力結果は次のとおりです(´д`) <input type="radio" name="bread" value="wheat" checked="checked" checked>wheat 小麦パン<br> <input type="radio" name="bread" value="white" checked="checked">white 白パン<br> <input type="radio" name="bread" value="rye" checked="checked">rye ライ麦パン<br> 近づいてきてはいるのですが、全部のラジオボタンにchecked="checked"が付いてしまっています(´д`) あと、valueで指定した文字列がタグの外に出てきてしまっています(´д`)

    • ベストアンサー
    • zyousuke
    • Perl
    • 回答数2
  • 変数名を配列として利用するには?

    複数のモジュールに記述されている配列を1つの配列へ代入したいと思っています。 単純に考えれば、 @array = (@Module1::array, @Module2::array, @Module3::array); で良いのですが、モジュールが多岐に渡っており、モジュール名自体はスカラー変数へ代入して置き、それを利用したいと考えています。 @array = (); foreach $m (qw(Module1 Module2 Module3)) { $mn = $m. '::array'; foreach $w (@{$mn}) { # @Module1::array にアクセスしているつもり push(@array, $w); } } この様なイメージです。 しかし、@{$mn}は Can't use string ("変数名") as an ARRAY ref while "strict refs" in use at 行番号. になってしまいます。 スカラー文字列に入っている配列変数へアクセスするにはどう記述すれば良いでしょうか?

    • ベストアンサー
    • u1kb
    • Perl
    • 回答数2
  • CGI.pmでラジオボタンを思い通り表示できない

    <INPUT TYPE="radio" NAME="bread" VALUE="wheat" CHECKED> 小麦パン<BR> <INPUT TYPE="radio" NAME="bread" VALUE="white"> 白パン<BR> <INPUT TYPE="radio" NAME="bread" VALUE="rye"> ライ麦パン<BR> CGI.pmでこれと同じ出力をするにはどうすればよいのですか。 解説サイトなどを見よう見まねで作った私のソースは次のとおりです。 #!/usr/bin/perl use CGI(-no_xhtml); my($q) = CGI->new; print( $q->header(-charset => "EUC-JP"), $q->radio_group(-name => "bread", -value => "wheat", -checked), " 小麦パン", $q->br, "\n", $q->radio_group(-name => "bread", -value => "white"), " 白パン", $q->br, "\n", $q->radio_group(-name => "bread", -value => "rye"), " ライ麦パン", $q->br ) これの出力結果は次のとおりです(´д`) <input type="radio" name="bread" value="wheat" checked="checked" checked>wheat 小麦パン<br> <input type="radio" name="bread" value="white" checked="checked">white 白パン<br> <input type="radio" name="bread" value="rye" checked="checked">rye ライ麦パン<br> 近づいてきてはいるのですが、全部のラジオボタンにchecked="checked"が付いてしまっています(´д`) あと、valueで指定した文字列がタグの外に出てきてしまっています(´д`)

    • ベストアンサー
    • zyousuke
    • Perl
    • 回答数2