Perlコーディング初心者質問スレ Part 55
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/05/30(水) 11:34:01ID:???【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2-10
前スレ http://pc11.2ch.net/test/read.cgi/php/1171102883/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0010nobodyさん
2007/05/31(木) 18:33:42ID:5ZmU8rMz#!/usr/bin/perl
print "Content-type: text/html", "\n\n";
$folda = 5555;
opendir(DIR , '.');
@view = readdir(DIR);
$xx = pop @view;
until ($xx eq ()) {
$xx = pop @view;
if ($xx == $id) {
print "elrr end2";
exit;
}
open(IN,"./$xx");
while(<IN>){
$aaa .= $_;}
close(IN);
open(OUT,"> ./$folda/$xx");
print OUT $aaa;
close(OUT);
$xx = pop @view;
}
print "elrr end";
このようにやってみましたが、ファイルは出来てもフォルダができません。
0011nobodyさん
2007/05/31(木) 18:35:50ID:F65+C5fx0012nobodyさん
2007/05/31(木) 19:29:38ID:???再帰的にコピーするPerlモジュールがあった気がするが、Googleで
30秒探して見付からなかったので諦めた。邪道も道。
#! /bin/bash
mkdir 5555;
cp -fR ./* 5555/;
echo "Content-Type: text/html";
echo "";
echo "mission complete.";
0014nobodyさん
2007/05/31(木) 20:08:01ID:???----
#! /usr/bin/env perl
use File::Copy::Recursive qw(dircopy);
dircopy(".", "5555/");
print "Content-Type: text/html\n\n";
print "mission complete.";
----
うちのActivePerlにはモジュールが入ってないので入れた。
ppm install File-Copy-Recursive
0015nobodyさん
2007/05/31(木) 21:38:40ID:???0016nobodyさん
2007/05/31(木) 22:06:41ID:oHHUgLPV秘密鍵を入力したユーザだけが参照可能にしたいのですが、
何か良い方法はありますでしょうか?
0017nobodyさん
2007/05/31(木) 23:17:43ID:???0018nobodyさん
2007/06/01(金) 12:46:18ID:nf+wPUURという文字列(最大5種の半角英文字の羅列で最長50バイト)を
「A3コ、C2コ、B5コ、A1コ、E1コ、D1コ、A2コ、C4コ、B1コ」
というように、文字列の先頭から連続している部分を一区切りとして取り出したいんですが
何か良い方法はないでしょうか?
正規表現で可能かとも思って、チャレンジしてみたんですが頭が足りずできませんでした・・・。
答えに直結するレスがもらえれば最高ですが、
答えに近づくアドバイス(参考書籍・サイト等)でも構いませんのでよろしくお願いします。
0019nobodyさん
2007/06/01(金) 13:00:54ID:???print $hoge;
002018
2007/06/01(金) 13:17:33ID:???ありがとうございます!希望通りできました。
こういうのは、センスなんでしょうか、慣れなんでしょうか。
単に私の努力と勉強がまだまだ足りないだけかもしれませんが・・・。
本当にありがとうございました。
0021nobodyさん
2007/06/01(金) 13:32:29ID:???print join ',', @r[map $_*2,(0..$#r/2)];
>>19のほうがいいな。
0022nobodyさん
2007/06/01(金) 18:28:10ID:???コマンドラインから引数を渡してPHPファイルに生成されるprint文(HTMLタグ含む)を
また別のperlファイルで読み込んで使用したいのですが、
HTMLに表示させるところまではうまくいくのですが、
表示させる場所を思い通りの場所に配置することができません。
というか、<html>〜</html>の外(直前)に出力されてしまいます。
perlファイルのソースは、
$i = 引数
open(FP,"| /hoge/file.php $i");
while(<FP>){ $s .= $_; }
close(FP);
return $s;
としています。
http://flex.ee.uec.ac.jp/texi/perl/perl_86.html
こちらのページで、別プロセスに〜と書いてありますが
何かいい方法はありますでしょうか。
0023nobodyさん
2007/06/01(金) 18:37:34ID:???0024nobodyさん
2007/06/01(金) 18:43:46ID:???う・・・・
ちなみに上で長々と書きましたが、
open(|FILEHANDLE,EXPR)としたときの返り値はサブプロセスの pid になるので
うまくperlファイルで扱えないのですが、
対応方法を教えていただきたく書き込みました・・・。
またエスパーですね・・・
0025nobodyさん
2007/06/01(金) 18:55:51ID:???必要になるたび(といっても3回程度ですが)ファイルを読み込むのとどっちがいいですかね?
0026nobodyさん
2007/06/01(金) 19:13:11ID:???> open(FP,"| /hoge/file.php $i");
|を置く場所が違う。それじゃデータの流れがperlからサブプロセス。
その結果、出力をperlが受け取ることなくその場で表示される。
正しくはこの位置
open(FP,"/hoge/file.php $i |");
# ちなみに、openじゃ入力と出力両方を接続することは出来ない。
# そういう用途ではIPC::Open2とかが必要
0027nobodyさん
2007/06/02(土) 06:39:37ID:L1OVX2ULPOSTの中身って自分で調べることが出来るんでしょうか?
cgiのURLはソースを見れば、バレバレなんですが、変数の中身はswfから受け取ってるので、
htmlのソースには書かれてないんです。
フラッシュ内にパスワードとかを書いておきたいのですが、見られると意味ないので…。
0028nobodyさん
2007/06/02(土) 06:45:27ID:???ttp://www1.mahoroba.ne.jp/~mitt/itmemo/webappsecurity/02.htm
見られて困るデータの場合は GET でなく POST を使いましょう。
そのまんまですがこれしか思い浮かばないです)
一般にサーバ側の履歴はアクセス要求があった URL などは保持しますが、
POST されたデータの中身まで1つ1つ保持することはほとんどありません。
ブラウザの履歴にも URL しか残らないので、他人にパソコンを触られても
どんなデータを送信したかまでは見られる心配はないです。
とは、書かれてあったのですが、心配なもので…。
0029nobodyさん
2007/06/02(土) 07:11:54ID:???0030nobodyさん
2007/06/02(土) 07:53:56ID:???0031nobodyさん
2007/06/02(土) 08:02:12ID:???ttp://www.sothink.com/product/flashdecompiler/
003227
2007/06/02(土) 08:41:15ID:???知りませんでした。とにかくどういう手法を使っても、
「自分のブラウザから」送信するデータを見えなくするって無理ってことですよね。
ありがとうございました。
0033nobodyさん
2007/06/02(土) 08:57:40ID:???方法は無数にあるけどPerl関係無いからね
0034nobodyさん
2007/06/02(土) 11:27:15ID:???それでいいんじゃないの
0035nobodyさん
2007/06/02(土) 18:23:49ID:???0036nobodyさん
2007/06/02(土) 18:26:37ID:???0038nobodyさん
2007/06/02(土) 22:23:08ID:???pod のディレクトリで grep してやっと所在が分ったよorz...
0039nobodyさん
2007/06/03(日) 00:18:54ID:???こういうのもあり。
0040nobodyさん
2007/06/03(日) 12:18:02ID:???画像に文字を入れようと思って、
ttp://www.ss.iij4u.or.jp/~somali/web/im_example/character.html
こちらのサイトを参考にやってるのですが、
どうしても、styleやstretchが上手くいきません。
style=>'Italic',
stretch=>'SemiExpanded';
と入れると上手く画像は生成されるのですが、肝心の
styleとstretchの効果が見られません。
何が原因になってるかお分りになる方教えてください。
PerlはActivePerlの最新版を使ってます。
0041nobodyさん
2007/06/03(日) 13:52:19ID:???Cとかだと当たり前だけど…
0042nobodyさん
2007/06/03(日) 13:57:30ID:???0043nobodyさん
2007/06/03(日) 14:26:20ID:???0044nobodyさん
2007/06/03(日) 14:37:50ID:???以前にはサブルーチンによる定数定義に "()"(引数なし) を使っていたくらいかな。今は更に特別な目的がないと使わないと思います。
0045nobodyさん
2007/06/03(日) 15:18:04ID:???氏ね。
>>41
モジュールから引っ張って来れないことがわかってから使わなくなったな。
呼び出し側にプロトタイプ書かなきゃ使えないなんて無意味すぎ。
0046nobodyさん
2007/06/03(日) 16:04:05ID:???なので放置推奨。
0047nobodyさん
2007/06/03(日) 21:19:35ID:???親を一つ持つか複数持つか、の違いだとは分かるんですが、継承を繰り返す=多重継承ではないんですか?
0048nobodyさん
2007/06/03(日) 21:42:25ID:???CGIでSELECT文を実行すると上手くいきません。
環境はwindowsXP,MySQL5.0,文字コードはsjisです。型はtextです。
--------------------------------------------------------------------------
$db = DBI->connect('DBI:mysql:zipcode:localhost', $user, $passwd);
$sth = $db->prepare("SELECT pref, area, addr FROM zipcode where post=3240021");
$sth->execute;
$num_rows = $sth->rows;
print "該当 $num_rows 件\n";
for ($i=0; $i<$num_rows; $i++) {
@a = $sth->fetchrow_array;
print "$a[0] $a[1] $a[2] \n";
}
$sth->finish;
$db->disconnect;
---------------------------------------------------------------------------
この結果は、
---------------
該当 1 件
??? ???? ??
---------------
と表示されます。マルチバイト文字が文字化けというか、
?としか表示されません。(?一つが一文字に対応しているようです。)
コマンドプロンプトからは正常に表示されました。
一つ指南のほうをよろしくお願いします。m(_ _)m
0049nobodyさん
2007/06/03(日) 21:43:46ID:???> useとuse baseは継承と多重継承だそうですが、違いはなんでしょうか?
use はコンパイル時にモジュールをロードする構文であり、use base は「所定の場所から base.pm を探してきてロードしなさいよ」といった意味です。
この場合、たまたま base プラグマが継承に関する機能を持っているというだけで、use 自体は継承とは何の関係もありません。
> 親を一つ持つか複数持つか、の違いだとは分かるんですが、継承を繰り返す=多重継承ではないんですか?
親を複数持つのが多重継承です。継承を繰り返すのが多重継承であれば、少なくとも Perl ではほとんどの明示的な継承は暗黙の多重継承となります。そうだとしたら呼び分ける必要がありませんね。
皮肉ではなく純粋に心配なので、こういうでまかせをどこから仕入れてくるのか、参考までにお教え願えませんか。
0051nobodyさん
2007/06/03(日) 22:27:09ID:???Perlの質問と言うかMySQLの質問に近いが…
MySQL上のどこかの文字セット設定がまずいな。多分スクリプト側だと思うが。
$db->do('SET CHARACTER SET sjis');
接続直後にやって見れ。
後、本当にsjisでいいのか?
Windowsお得意の機種依存文字を受け入れたいならcp932使っとけ。
いや、解ってて確固たる信念を持って受け入れないならそれはそれでいいんだが。
0052nobodyさん
2007/06/03(日) 22:31:12ID:???my.cnf (Windows XP ということなので my.ini とかになるのかな?) の調整で解決しないかな。
いかにも自動変換が悪さをしている気配よ。
0053nobodyさん
2007/06/03(日) 23:30:46ID:???0054nobodyさん
2007/06/05(火) 03:15:21ID:???my $dir_name = "test";
opendir(DIR,"$dir_name");
closedir(DIR);
として、変数dir_nameに直接ディレクトリ名を入れると読み込めるのですが、
my @dir_list = (test,test2);
opendir(DIR,"$dir_list[0]");
closedir(DIR);
とすると読み込めないのは何故でしょうか?
my @dir_list = (test,test2);
my $dir_name = $dir_list[0];
opendir(DIR,"$dir_name");
closedir(DIR);
とした場合でも同様に読み込めず、原因が何なのかもわからず困っています…。
何か基礎的な部分で間違っているのかもしれませんが、教えて頂けると助かります。
宜しくお願い致します。
0055nobodyさん
2007/06/05(火) 04:59:46ID:???> my @dir_list = (test,test2);
ソースそのまま実行したのなら。
my @dir_list = ('test','test2');
opendir DIR, $dir_list[0] or die ;
する事もお勧め。
0056nobodyさん
2007/06/05(火) 13:41:17ID:???回答ありがとうございます。
こちらに書き込みをする時に""を付け忘れていました…;
実際のソースは↓の通りです。(サブルーチンの内容は省略)
my ($error,$th_max);
my (@thread,@response,@th_list);
unless(opendir(DIR,"testdir")){$error .= "魚";&error();}
@thread = readdir(DIR);
closedir(DIR);
splice(@thread,0,2);
pop @thread;
$th_max = @thread;
unless(open(FILE,"<testdir/list.dat")){$error = ."魚"; &error();}
@th_list = <FILE>;
close(FILE);
chdir("testdir");
unless(opendir(DIR,"$th_list[0]")){$error .= "魚"; &error();}
closedir(DIR);
最後の2行を消した状態では問題なく動作したので、最後のopendirの
ディレクトリ指定が間違っていると思うのですが…。
0057nobodyさん
2007/06/05(火) 13:57:55ID:???改行が残っているということではないか
0058nobodyさん
2007/06/05(火) 14:01:14ID:???の
$error = ."魚"
ここで死んでるだけだと思われ
use strict;
use warnings;
くらい付けましょう
005954
2007/06/05(火) 15:06:29ID:???@th_listは
1行目:001
2行目:002
3行目:
となっています。$th_list[0]には1行目の「001」が入っています。
opendir(DIR,"001") とした時は動作するのですが、
opendir(DIR,"$th_list[0]") とした時は動作しません…。
>>58
またまた下記間違えです…すみません;
>>56でも書きましたが、最後の2行を消した状態では問題無く動作しているので、
最後の2行に問題があると思うのですが…。
006054
2007/06/05(火) 15:10:42ID:???サブルーチン&errorに飛んでしまうという事です。
>>56の最後の2行目を除いた状態では、&errorに飛ばずそのまま次の処理へ映るのですが、
unless(opendir(DIR,"$th_list[0]")){$error .= "魚"; &error();}
closedir(DIR);
という記述をすると、$th_list[0]に入っている「001」というディレクトリが開く筈のところ、
何故かディレクトリを開けずに&errorに飛んでしまうのです。
006154
2007/06/05(火) 15:25:19ID:???勘違いしていました…各行に改行が入っているという事だったんですね;
chopを使って@th_listの各行の改行を削除したところ、解決しました。
長々とすみませんでした;
ありがとうございました。
0062nobodyさん
2007/06/05(火) 15:25:28ID:???自分の書き込みのチェックぐらいしろ。
てか、後出し情報多すぎ。
>>54のときと>>56のときと問題が微妙に変わってるし。
お前の書き込みを真に受けて付き合ってる方の身にもなれ。
結論は>>57が正解。
chomp使え。
006362
2007/06/05(火) 15:26:20ID:???0064nobodyさん
2007/06/05(火) 17:36:05ID:???老婆心ながら。
本当に「001」って名前のディレクトリを使ってないと思うが、
もし使ってるのなら用心した方がいいよ。ls を取りながら実際に
以下のワンライナーを実行してみると良い。
% perl -le 'mkdir 0101'
% perl -le 'mkdir q{0101}'
% touch 0101/foo
% perl -Mstrict -w -le 'opendir DIR, 0101 ; print readdir DIR '
0065nobodyさん
2007/06/07(木) 10:44:45ID:???どういう方法がよいのでしょうか?
よろしくお願いします。
0066nobodyさん
2007/06/07(木) 11:08:49ID:???詳しくはGoogle参照。
0069nobodyさん
2007/06/07(木) 11:51:14ID:???0071nobodyさん
2007/06/08(金) 12:26:55ID:???0073nobodyさん
2007/06/10(日) 03:46:48ID:???0074nobodyさん
2007/06/10(日) 15:23:21ID:m8gOFHaOnmakeもnmake15もmingw32-makeを使ってもダメなんですが、
WindowsでCPANを使う時には何が主流ですか?
0075nobodyさん
2007/06/10(日) 21:30:37ID:c+ghO5Jd>本当に「001」って名前のディレクトリを使ってないと思うが、
>もし使ってるのなら用心した方がいいよ。
というのはどういう事でしょうか?
ディレクトリ名に番号を使用するとエラーになる(?)可能性があるとかでしょうか?
>>54じゃないですが、ちょっと気になったもので…
0076nobodyさん
2007/06/10(日) 22:59:35ID:???ヒント: Perl的には0で始まる"数字"は8進数
0078nobodyさん
2007/06/11(月) 17:47:01ID:???今レンタル鯖でLWP::Simpleを使って、cronを仕組んで、100以上のurlを早朝にgetしてパースしています。
uptimeの値を見ても、全くといっていいほど、負荷はかかっていないように思えるのですが、getするのに一番時間が
かかっているためなのか、スクリプトの実行から終了まで2分程度掛かっているようです。
一般論として、レンタル鯖でやってはいけない負荷の高いスクリプトの使用とは、何をもって判断すべきでしょうか?
また、LWPで100以上のurlを一気に取得することは非常識なのでしょうか?
0079nobodyさん
2007/06/11(月) 18:26:54ID:???0080nobodyさん
2007/06/11(月) 19:52:40ID:???個々については鯖に聞かないといけないのはわかるけど、このスレには自分で書いたスクリプトを
走らせてる人も多いと思うんだけど、これはヤバいかな?みたいな定性的な判断ってどうしてるのかな。
0081nobodyさん
2007/06/11(月) 20:01:33ID:???0082nobodyさん
2007/06/11(月) 20:46:11ID:???GD : 大変微妙
fork ; sine
こんな感じ
0083nobodyさん
2007/06/11(月) 22:01:55ID:???当方何も思いつきませんので、何か思いついた方がいらしたら教えて下さい。
【入力例】
前走の大敗がよく分からないが、引き続き毛ヅヤや馬体の
張り等は際立って良く見える。
【出力例】
見際体きいよ前
え立の毛がく走
るっ張ヅ、分の
。てりヤ引か大
良等やきら敗
くは馬続なが
、
実際は縦書き用の等幅フォントを使用します。
0084nobodyさん
2007/06/11(月) 22:57:17ID:???my $str = 'hogehoge,fugafuga,piyopiyo,barbar'x3 ;
my @word ;
my $cnt = 0 ;
for ( split //, $str ){
if ( $cnt == 10 and ! /^,$/ ){
push @{$word[10]}, q{ } ;
push @{$word[0] }, $_ ;
$cnt = 1;
next ;
}
push @{$word[ $cnt]}, $_ ;
$cnt == 10 ? $cnt = 0 : $cnt ++ ;
}
my $len = @{ $word[0] } ;
for my $line ( @word ){
push @{ $line }, q{ } if $len != @{ $line } ;
print join q{}, ( reverse @{ $line }) , "\n" ;
}
0085nobodyさん
2007/06/11(月) 23:01:51ID:???use warnings;
use utf8;
binmode STDOUT, ":utf8";
my $text = '前走の大敗がよく分からないが、引き続き毛ヅヤや馬体の張り等は際立って良く見える。';
my $wrap = 6;
my ($i, @cols);
for my $str (split //, $text ) {
unshift @{$cols[$i++]}, $str;
$i=0 unless $i % $wrap;
}
my $len = @{$cols[0]};
for my $col (@cols) {
if (my $space = $len - @$col) {
unshift @$col, (" " x $space);
}
print join("", @$col), "\n"
}
俺の無い知恵を絞った力作
0086nobodyさん
2007/06/11(月) 23:21:40ID:???0087nobodyさん
2007/06/11(月) 23:37:43ID:LQaHOZkBよろしくおねがいします。
メールフォームで添付ファイルをつけて送信されるようにしたいと
思っているのですが、添付されたファイルが全て1バイトになっていまいます。
考えられる原因は何でしょうか?
サーバーの一時フォルダ(temp)にアップロードされているファイルは0バイト
になっています。
どうぞよろしくおねがいします。
0088nobodyさん
2007/06/11(月) 23:38:11ID:???ありがとうございます。恐縮です。
後で試してみます。
>>86
もしかして禁則無いですか?
まぁアイデアは貰えたのでそのへんは己で何とかします。
0090nobodyさん
2007/06/11(月) 23:45:39ID:???0091nobodyさん
2007/06/11(月) 23:52:48ID:LQaHOZkBSubject: $B%5%$%H$NEPO?(B
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary="abcdefghijklmnopqrstu"
--abcdefghijklmnopqrstu
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encording: 7bit
こんな感じになっています。
これはマルチパートになっているということでいいんでしょうか?
0092nobodyさん
2007/06/11(月) 23:54:50ID:LQaHOZkBprint MAIL "To: $mailAdd\n";
print MAIL "From: $custAdd\n";
print MAIL "Reply-To: $custAdd\n";
print MAIL "$mailTitle\n";
print MAIL "Mime-Version: 1.0\n";
if($filename){
print MAIL "Content-Type: multipart/mixed; boundary=\"abcdefghijklmnopqrstu\"\n\n";
print MAIL "--abcdefghijklmnopqrstu\n";
print MAIL "Content-Type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encording: 7bit\n\n";
} else{
print MAIL "Content-Type: text/plain; charset=ISO-2022-JP\n";
print MAIL "Content-Transfer-Encording: 7bit\n\n";
}
print MAIL "$body";
if($filename){
print MAIL "--abcdefghijklmnopqrstu\n";
print MAIL "Content-type:";
print MAIL &filetype($filename2);
print MAIL "Content-Disposition: attachment; filename=\"$filename2\"\n";
print MAIL "Content-Transfer-Encoding: base64\n\n";
print MAIL "$encodetenp\n\n";
print MAIL "--abcdefghijklmnopqrstu--\n";
}
close (MAIL);
ソースの方はこんな感じにしています。
ファイル名は正しく添付されているのですが、なにせ中身がありません・・・
よろしくおねがいします。
0093nobodyさん
2007/06/12(火) 09:41:54ID:???あんまり長いURLの場合は、URLを省略して表示させたいのですが、
どうすればいいのでしょうか?
例えば30文字以上のURLだったら、後半を省略してリンクさせる。
【例】ttp://www.yahoo.co.jp/ex…
-----------------------------
sub auto_link {
$_[0] =~ s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1<a href=\"$2\">$2<\/a>/g;
}
-----------------------------
0094nobodyさん
2007/06/12(火) 10:01:51ID:???その部分だけではなんともいえない。Perlプログラムがどうこうより、まずは
生成されたメールのソースをよく見て関連するRFCに照らし合わせて正しいか
どうか確認したほうがいいと思われる。
0096nobodyさん
2007/06/12(火) 10:28:43ID:???もとのURLの後半をcutしてから『…』くっつけて、
html出力するときにリンクタグではさめばいいだけじゃん
何を悩む必要があるのかわからないんですけど
0097nobodyさん
2007/06/12(火) 11:51:51ID:???俺は君の回答がさっぱりわからない。
cutしてからリンクタグだと、リンクの飛び先も…になるじゃない。
しかも>>93が言っている変換対象の変数にはURLがひとつというわけでもなさそうだし。
0098nobodyさん
2007/06/12(火) 12:40:01ID:???初心者にも程があるだろ
0099nobodyさん
2007/06/12(火) 12:43:17ID:???氏ね
$_[0] =~ s/([^=^\"]|^)(https?\:[\w\.\~\-\/\?\&\=\@\;\#\:\%]+)/$1 . '<a href="' . $2 . '">' . (length $2 > 30 ? substr($2, 0, 30) . '…' : $2 ) . '<\/a>'/egx;
0100nobodyさん
2007/06/12(火) 12:44:13ID:???0102nobodyさん
2007/06/12(火) 13:12:38ID:???use String::Multibyte;
my $mcbs = String::Multibyte->new('shiftjis');
(my $str = <<"EOF") =~ tr/\r\n//d;
前走の大敗がよく分からないが、引き続き毛ヅヤや馬体の
張り等は際立って良く、見える。
EOF
my $length = 6;
my @array;
my @str = $mcbs->strsplit('', $str);
while(@str){
foreach(0..$length-1){
unshift(@{$array[$_]}, shift(@str) || ' ');
}
unshift(@{$array[$length]}, ($mcbs->strspn($str[0], '、。') ? shift(@str) : ' '));
}
foreach(@array){
print @{$_}, "\n";
}
# つか、乗り遅れた感。
>>92
一度、MIME::LiteやMIME::toolsとかモジュール使ってみて比較してみれば。
0103nobodyさん
2007/06/12(火) 13:25:10ID:???ふつーに変数2つとか配列とかハッシュとかに突っ込んで片方cutすりゃいいだけだろ
ソースもクソもねえよ
0104nobodyさん
2007/06/12(火) 13:25:13ID:???一度にやらない方が見通しがよいんじゃないか? 前半はJcodeのjfoldとか
使えばいいわけだし。
0105nobodyさん
2007/06/12(火) 13:43:40ID:???文字の切り分けは、どこかで一文字単位にしないといけないので、一度にsplitした方がいいように思う。
my @str = $mcbs->strsplit('', $str);
my @array;
# 一定の長さで区切って配列を作る
while(@str){
my $l = [map{shift(@str) || ' '}(1..$length)];
push(@{$l}, ($mcbs->strspn($str[0], '、。') ? shift(@str) : ' '));
push(@array, $l);
}
# 縦横を変える
my @array2;
for my $i (0..$length){
push(@array2, [reverse map{$array[$_]->[$i]}(0..$#array)]);
}
foreach(@array2){
print @{$_}, "\n";
}
0107nobodyさん
2007/06/12(火) 13:51:06ID:???0108nobodyさん
2007/06/12(火) 13:54:55ID:???■ このスレッドは過去ログ倉庫に格納されています