Perlコーディング初心者質問スレ Part 53
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/11/26(日) 14:38:23ID:SlmGsFMB【投稿する際の注意】
質問するときは内容をよく吟味してから投稿してください。
「コマンドの意味がわかんない」とかはマニュアル見ましょう。
回答者さんは何でも屋じゃありません。
1: 自分はこういう事がしたい。
2: それでこんな風にやってみたが・・・
3: こんなエラーが出て上手く行かなかった。
最低でも1と3が無いと誰も答えられないよ。
ソース貼る時は、全角スペースでインデント忘れずに。
良い回答は良い質問から。一緒に勉強しましょう。
お勧めサイトは >>2-10
前スレ http://pc8.2ch.net/test/read.cgi/php/1153987463/
過去ログ倉庫 ttp://user.ftth100.com/mirrorhenkan/perl/
0623nobodyさん
2007/01/01(月) 21:04:13ID:???0624nobodyさん
2007/01/01(月) 23:37:36ID:???>そこで、foreach $ngw (@xx){}とforeach $ngw (@ngword){}が重複しているようで、
>表記としておかしくないか疑問に思いました。
そりゃどう考えてもおかしい。perlに限らずプログラミング一般論として。
>spam対策のために禁止語句をCGIファイルから読み込みたいと思い書き換えました。
CGIの意味知ってる?
そこは単にテキストファイルでしょ。なんで、そんなファイルの拡張子に".cgi"付けるの。
新年早々猪突突進か
0625nobodyさん
2007/01/01(月) 23:59:59ID:???0626nobodyさん
2007/01/02(火) 00:10:37ID:???0627nobodyさん
2007/01/02(火) 00:17:55ID:???目くじら立てることでもない。
0628nobodyさん
2007/01/02(火) 00:29:14ID:???こぢんまりしたサイトでは目くじら立てなくてもいいかも知れないが、
職業プログラマが製品レベルではやらないことだな。
0629nobodyさん
2007/01/02(火) 00:46:17ID:???自分だけのデータならランダムで32文字でつけたディレクトリにデータファイル入れたりしてる
0630nobodyさん
2007/01/02(火) 01:29:17ID:???とりあえず、2つのforeach文をそれぞれ同じ変数$ngwに入れてるみたいだから、それを別々にしてみよう。
一つ目を$ngw1、二つ目を$ngw2とか。
で、
if ($FORM{'value'} =~ /\Q$ngw\E/i){
を
if ($FORM{'value'} =~ /\Q$ngw2\E/i){
にしてみると大丈夫だと思うよ。
0631nobodyさん
2007/01/02(火) 02:15:39ID:???『次のファイルを開こうとしています。』となって表示されません。
ライブラリファイルの拡張子は.plなのですが、保存したファイルは普通にダブルクリックで開けてしまいます。
.pl拡張子は何か特別な設定が必要なのでしょうか?
0632nobodyさん
2007/01/02(火) 02:24:31ID:???どう読み込もうとしたのか。requireとかopenとか…ダブルクリックとか。
> 『次のファイルを開こうとしています。』となって表示されません。
これは自作メッセージ?STDOUTかSTDERRに出てるのか、UAの画面に表示されるのか。
CLIのお手軽アプリを作ったときに、こういうメッセージをprintしてファイルの中身をSTDOUTに吐く前に
無限ループにはめて先に進まなくなったことは何度もある。
# open(FH, '<', "hoge.dat"); flock(FH, 2); @buffer = <FH>; close(FH);
# while (@buffer) { print 'while でなく foreach と書いたつもりの酔っ払い', "\n"; }
質問がWebProg関係なのかどうかも含めて、ちょっとよくわかんない。
.plだからとくにどうこう、ってのはないです。
0634622@解決済み
2007/01/02(火) 09:03:38ID:5ekfui+1>>630
ありがとうござます。↓昨日また少し考えてこんな感じになりました。
if (crypt($FORM{'spwd'},substr($password,$salt,2)) ne $password)
{if ( !open(NGW, "<$spamdata") )
{
&error('0');
}
flock(NGW, 1);
@xx = <NGW>;
close(NGW);
foreach $ngw (@xx){
@ngword = split(/,+/,$ngw);
foreach $ngwbb (@ngword)
{
if ($FORM{'value'} =~ /\Q$ngwbb\E/i)
{
&error('メッセージ内に使用禁止ワードが含まれています。');
}
}
}
}
ご協力ありがとうございました。
0635nobodyさん
2007/01/02(火) 17:42:57ID:???WINDOWS鯖の場合だと
if (-w $write_file_path) { print "書き込み可能\n"; }というプログラムがが使えないんです
0636nobodyさん
2007/01/02(火) 19:27:19ID:???0637nobodyさん
2007/01/02(火) 19:31:28ID:???0638nobodyさん
2007/01/02(火) 20:42:50ID:???0639nobodyさん
2007/01/02(火) 21:13:35ID:???0640nobodyさん
2007/01/03(水) 11:08:33ID:???マルチ放置推奨
0641nobodyさん
2007/01/03(水) 22:13:23ID:???なのでしょうか?
そういえば1年前に5000兆まで計算させるシステムを作った
のを思い出したのですが、その頃は最大計算桁数のことを
考えていなかったような気がするので質問させていただいた
次第です。
ご教示いただけますと幸いです。
0642nobodyさん
2007/01/03(水) 22:24:17ID:???0643nobodyさん
2007/01/04(木) 00:30:50ID:???ご教示有難うございます。
ちょっと昔のソースを改変するのにもある程度理由を
つけなければいけないので、デフォルトで何桁まで
問題ないかもしご存知でしたら教えていただけますと
幸いです。
質問続きですみません。
0644nobodyさん
2007/01/04(木) 12:00:06ID:???0645nobodyさん
2007/01/04(木) 16:29:54ID:???IVはポインタが格納できることが保証される符号あり整数型、
UVはIVと同様の符号なし整数型。
そしてNVは倍精度浮動小数点型となっている。
えーとだからその処理系における不動小数点型の表現がIEEE 754だと仮定すれば、
倍精度浮動小数点型の仮数部は52bitで、
32bitマシンの場合は(恐らく)UVのほうが表現できる範囲が大きい(52bit - 15~16桁)。
64bitマシンの場合はIV/NVのほうが表現できる範囲が大きい(64bit - 18~20桁)。
かな。前に齧り読んだことと、ドキュメントの関連してそうな部分を
掻い摘んで読んだのを組み合わせただけなのであってるかどうかはわからん。
See also: perlguts
0646nobodyさん
2007/01/04(木) 16:40:19ID:???訂正
> 32bitマシンの場合は(恐らく)UVのほうが表現できる範囲が大きい(52bit - 15~16桁)。
> 64bitマシンの場合はIV/NVのほうが表現できる範囲が大きい(64bit - 18~20桁)。
ここ思いっきりUVとNVが逆になってる( ´д`;) 読み替え宜しく
0647nobodyさん
2007/01/04(木) 18:37:22ID:???0648nobodyさん
2007/01/05(金) 04:06:51ID:CAClPvdI最新のexpatもいれたのですが。。
0649nobodyさん
2007/01/05(金) 07:21:32ID:???0650nobodyさん
2007/01/05(金) 12:28:06ID:???ブラウザーからの入力に応じてcgiファイルを書き換えるcgiを作ってみたいのですが。
書き換える側のCGIのソースと書きこまれる側のソースが混ざってしまって
バグがおきてしまいました。
書き込まれる側のソースにシングルクオーテーション、ダブルクオーテーション
が含まれていて書き換える側のダブルクオーテーションで囲まれた間の部分に、
書き込まれる側のダブルクオーテーションが存在してしまうようです。
他にも変数を文字列として書き出せず変数の中身、つまり何も無いスカが書き出されます。
どうすれば良いでしょうか?
0652nobodyさん
2007/01/05(金) 13:19:34ID:???それだけじゃ何もわからん。OSは?Perlのバージョンは?Cコンパイラは持ってる?
0653650
2007/01/05(金) 13:24:38ID:???とりあえずCGIからいろんなファイルに書き込むプログラムを色々と書いてみているのですが。
テキストやHTMLは上手く書き込めたのですがCGIのファイルは上手くいきませんでした。
CGIファイルへの書き込みは習っても意味が無いのでしょうか?
0654nobodyさん
2007/01/05(金) 14:31:51ID:???勉強するだけならいいけど実際に共有鯖等では実行しないで欲しいね。
リスクが高いです。他のユーザーに迷惑かける可能性大。
0655nobodyさん
2007/01/05(金) 14:39:32ID:???0656nobodyさん
2007/01/05(金) 17:52:53ID:???ユーザは許可されている事はなんでもやってよい。
0657nobodyさん
2007/01/05(金) 19:09:54ID:???実行可能=やってよいとか考えているわけではありませんよね^^;
0658nobodyさん
2007/01/05(金) 19:19:39ID:???0659nobodyさん
2007/01/05(金) 20:31:05ID:5w1bms+v>> それだけじゃ何もわからん。OSは?Perlのバージョンは?Cコンパイラは持ってる?
OSはFedoraCore6
PerlVersionは v5.8.8 built for i386-linux-thread-multi
Cコンパイラはあります。gcc -v で確認しました。
どうもexpat関係でエラーになっています。最新のexpatはいれたのですが。
0660nobodyさん
2007/01/05(金) 23:49:44ID:???'$' の前に¥でescapeしたり、ということで解決するんじゃないか。
それ以前にcgiがcgi を書き換えるという発想はどうなのよ。
動的にプログラムを生成する必要性はそうないんじゃないか。
0661nobodyさん
2007/01/06(土) 01:22:14ID:???>が含まれていて書き換える側のダブルクオーテーションで囲まれた間の部分に、
>書き込まれる側のダブルクオーテーションが存在してしまうようです。
>他にも変数を文字列として書き出せず・・・
自分でわかってんじゃん
0662nobodyさん
2007/01/06(土) 14:46:16ID:???0663nobodyさん
2007/01/06(土) 14:55:31ID:???そのままで良いんですね。。。
0664nobodyさん
2007/01/06(土) 16:32:45ID:???つまり>>650は何か間違った設計をしてるんだろうと思う。
てか掲示板のログファイルの拡張子を .cgi にしたいだけとかでは
0665nobodyさん
2007/01/06(土) 19:32:53ID:???PerlによるCGIの参考書を買ってゼロから勉強中ですが、
下記のプログラム(参考書を丸写し)が動作しません。エラーコードは500です。
原因は何でしょうか?
・Perlのパスはレンタルサバのサイトで確認
・ファイル名はindex.cgi
・OSはWinで、メモ帳で編集しFFFTPでUL
・パーミッションは755
#!/usr/bin/perl
print <<_EOF;
Content-type: text/html
<html>
<head><title>test</titel></head>
<body>
test
</body>
</html>
_EOF
0666nobodyさん
2007/01/06(土) 19:54:15ID:???500エラーじゃ何も判らんし、そもそもレン鯖使って勉強するなといいたいが。
・FTPの時にASCIIモードで送って無い
・パーミッションがレン鯖指定のものと違う
・そもそもindex.cgiが使えないようになっている(別名でテストしてみ)
とかそんなあたりか。ソースそのものは問題ない。
タグでtitleの打ち間違いがあるくらいか。
0667nobodyさん
2007/01/06(土) 20:03:54ID:???0668nobodyさん
2007/01/06(土) 20:07:39ID:???・バイナリモードで転送した
・ヒアドキュメント終端文字列でファイルが終わってる(改行がない)
辺りが有力っぽい。
0669nobodyさん
2007/01/06(土) 20:23:33ID:lBOtCkKIエラーメッセージを出すようにしたいと思っています。
投稿されたメッセージ$messageに
半角カタカナが含まれているかどうかを判定する、というのは
どう書けばよいでしょうか?
全角文字があるかどうかを判定ならググって出てきましたが・・・。
0670nobodyさん
2007/01/06(土) 20:23:42ID:???回答ありがとうございます。
>・FTPの時にASCIIモードで送って無い
FFFTPの環境設定に転送設定という箇所があったので、
「常にアスキー」に設定し、ULしなおしました。
>・パーミッションがレン鯖指定のものと違う
確認したところ、実行ファイルは700が推奨されていたのでそうしました。
705も試しました。
>・そもそもindex.cgiが使えないようになっている(別名でテストしてみ)
確認したところindexで問題ないようですが、test.cgiに変更しました。
ですが、動作しませんでした。
0672669
2007/01/06(土) 21:04:52ID:???・・・が、さらに質問です。
名前とタイトルに含まれる半角カタカナは全角に変換でいい。
そこでログに書き込むサブルーチンregistに、
&jcode'h2z_sjis(*name);#$nameの半角を全角に
&jcode'h2z_sjis(*subject);#$subjectの半角を全角に
と書いたのですが、名前のほうが変換されません。
0673nobodyさん
2007/01/06(土) 22:19:16ID:???0674nobodyさん
2007/01/06(土) 22:29:08ID:???モジュールのインストールなしに出来る方法はどんな方法があるのでしょう。
今はuse libとuse Crypt::CBCとBlowfish_PPでやっているのですが、どうしても遅いので
もう少し早くできると良いのですが。
>>662でlinux上で単純にコンパイルしてそのままautoディレクトリをコピーしてやれば良いのかと思って
コピーしてみましたが
Blowfish.so: undefined symbol: Perl_Gthr_key_ptr
こんな感じのエラーが出てしまいました。
Blowfish_PPとBlowfishでは速度が違いすぎるので、出来ればBlowfishの方を使いたいのですが、
どうすれば使えるのでしょうか。
0675nobodyさん
2007/01/06(土) 22:59:26ID:???0676nobodyさん
2007/01/06(土) 23:03:37ID:???0677nobodyさん
2007/01/06(土) 23:21:18ID:???同じ文字列入れてnameの方だけ変換ないってんなら
おまいが間違ってるとしか言えん。
>>674
モジュール無しで、ということだけならopensslに投げるという手もある。
モジュールのほうが速いと思うけど。
0680nobodyさん
2007/01/07(日) 00:28:09ID:???拡張子をcgiにすればファイルの中身を見られることもないのですが、まあ気休め程度に。
>>677
すみません。解決しました。
サーバーとローカルのperlのバージョンが違ったためにモジュールのバイナリを使用できていなかったようです。
サーバーとローカルのperlのバージョンをそろえてコンパイルしなおしたらそのままコピーでuse libしたら
出来ました。
0681nobodyさん
2007/01/07(日) 00:28:21ID:???レス遅れましたが、本当に有難うございました。
検証もしてみましたので検証報告も兼ねさせていただきます。
結論から申し上げますと、16桁目の4以上、つまりは4000兆
くらいから計算が狂ってきました。
これは645さんのおっしゃる32ビットマシンの性能ということ
に当てはまったのではないかと思いました。
ご丁寧に有難うございました。
0683nobodyさん
2007/01/07(日) 19:30:50ID:???Mac OS X PantherのTerminal上にて運用する予定のPerlスクリプトをMac OS X Tigerにて作っています。
指定されたディレクトリの中にある1万個程度のテキストを片っ端からチェックして、
ある特定の文字列があったら別の文字列に置き換えて保存するという処理なのですが、
一部ファイル名の最後の文字がスペースのものがあった場合に
それらの展開に失敗する(最後のスペースが無いものとしてファイルを開こうとする)ようです。
ファイル名の最後のスペースを認識させるにはどのような方法があるのかご教示頂けますと幸いです。
よろしくお願いいたします。
0685nobodyさん
2007/01/07(日) 20:02:08ID:???panther も tiger も5.8.xなのでバージョンの違いとか、OSの違いによるもんじゃないと思うそ。
0687nobodyさん
2007/01/07(日) 20:15:21ID:???0688nobodyさん
2007/01/07(日) 20:27:45ID:???案外知られてないのかな
0689nobodyさん
2007/01/07(日) 20:47:03ID:???とりあえずやってみたのがファイルのパスを' 'でくくるとか
" "でくくって\を付けるとかくらいなもので…
>>685
デキタ━━━━━━(゚∀゚)━━━━━━!!!!
何でなのか理屈がよく分かりませんができたっぽいです。
迅速なお答え、本当にありがとうございました!
0690683
2007/01/07(日) 20:52:01ID:???ご察しの通りPerlの仕様だったようです。
これでPantherのPerlが5.6だったりしたら路頭に迷うところでした。
>>687
検証して頂きありがとうございます。
おかげさまで何とかなりそうです(*´∀`)
>>688
Perlは一応それなりに馴染んでいたつもりだったのですが
今回の件には完全にやられました。もっと精進します。
0691nobodyさん
2007/01/07(日) 21:22:42ID:???0692nobodyさん
2007/01/08(月) 05:15:48ID:???ttp://www.mcdonalds.co.jp/mcgriddles/index.html
0693nobodyさん
2007/01/09(火) 00:38:49ID:???どう書けばいいでしょうか。
jcode.plではなく普通に置換で行いたいと思うのですが。
ここの正規表現みていたら訳が分からなくなってきた・・・。
ttp://sieg.xeong.com/archives/2005/06/perl.html
0695nobodyさん
2007/01/09(火) 01:08:35ID:???0696nobodyさん
2007/01/09(火) 01:11:19ID:???0697693
2007/01/09(火) 02:24:52ID:???EUCはブラウザのミスによる文字化けがあるから嫌なんです(タブブラウザにしなくていいからこっちを先に治せM$)。
CHARSET設定していながら何かの拍子に化ける→エンコードし直しうざい
それに半角カタカナを使えるようにしたいのではないので。
・・・大体、半角カタカナを使って書く言葉って、あまりいい意味の言葉じゃないですよね。
0698697
2007/01/09(火) 02:37:18ID:???tr使ってもダメだと書いてあるページを見つけました・・・
もともとのスクリプトではフォームデコードに
&jcode'h2z(\$value);
があって、投稿した半角カタカナは全て全角に変換されるんですが
これだと「・・・」まで変換されて(個人的に)変な感じがする。
しかもこれはカタカナではない記号ですしね。
で、他に方法はないかと思ったのですが。
半角→全角は諦めるしかないみたいですね。
レスありがとうございました。
0699nobodyさん
2007/01/09(火) 02:47:31ID:???どうしてもあわせたいならHTMLをunicodeにしちゃえよ
0700nobodyさん
2007/01/09(火) 03:06:27ID:???後は濁点付きを適当に置き換えれば。
0701nobodyさん
2007/01/09(火) 03:14:56ID:???SJISだから合わせるとかなんとかってのは無視してくださいな。
そんなことどうでもいい。
とにかく半角カタカナを使ってもらいたくないというのと
半角カタカナを2ちゃん以外の場所で見たくないってだけ。
半角カタカナがあればエラーってのもやってみたし
半角カタカナを全角変換もやってみたけど
カタカナじゃないやつまで処理してしまうというのが・・・ってだけの問題。
0702nobodyさん
2007/01/09(火) 04:25:59ID:???ナンテイウカ タンナル アレルギー ニ シカ ミエナイ カンシ ゙ダナ
0703nobodyさん
2007/01/09(火) 06:21:11ID:???何処か一文字間違ってるんだろうけど何処が間違ってるか分からない、といったユーザの不満を解消すべく
ショッピングカートの改良しようと思っています
パスワードのMD5ハッシュをDBに保存するロジックを平文での保存にすることは簡単にできたので、
あとは何処がが間違っているかをユーザに教えるロジックを作ればいいんですが、どうするのがユーザビリティ的に好ましいでしょうか?
正しいパスワードとユーザ入力のパスワードが同じ文字数の場合には、
正しいパスワード "hoge2CH" の時、ユーザが "hoge2ch" と入力したら、
「パスワードの6文字目・7文字目が間違っています。」 と返す、のように簡単にいくんですが、
正しいパスワードが "hoge2CH" の時、ユーザが "hoge2C" と入力した場合に、
貴方がユーザだとしたらどういうエラーが返って来て欲しいかを教えて下さい。
0707nobodyさん
2007/01/09(火) 11:49:21ID:???> 貴方がユーザだとしたらどういうエラーが返って来て欲しいか
正しいパスワードそのものを表示して欲しいな。
0708nobodyさん
2007/01/09(火) 12:40:14ID:???パスワード送信できるようにすれば
0709nobodyさん
2007/01/09(火) 13:09:11ID:???>>697
>・・・大体、半角カタカナを使って書く言葉って、あまりいい意味の言葉じゃないですよね。
はい、いい意味じゃない言葉。
m9(^Д^)プギャー ( ´_ゝ`)フーン ( ゚д゚)、ペッ( ゚Д゚)ヴォケ!!
('A`)マンドクセ ( ´,_ゝ`)プッ
顔文字だけでこれだけありますね。
顔文字だけならДゝあたりをNGにすればいいですが、顔文字なしで
使う場合もある。
NGワードに半角カタカナを指定すると誤爆しまくるのでダメ。
#ギあたりでひっかかる
0710nobodyさん
2007/01/09(火) 13:12:47ID:???日本人だよね?作ったのって。
;#$jcode'h2zf{'xxx'}
;#These are pointer to the corresponding function just
;#as $jcode'convf.
これなんかどういう意味?どういう使い方するわけ?
訳はできても使い道がわからないんだが。
0711nobodyさん
2007/01/09(火) 13:20:54ID:???0713nobodyさん
2007/01/09(火) 16:27:08ID:???ここの内容をコマンドライン上ではなく、
perlスクリプト内でしたいのですが、
どうやってやればよいでしょうか?
ご教授お願いします。
PHPは結構かじりましたが、perlは全く0です。
正規表現もそれほど自信がないです・・・・ orz
0715nobodyさん
2007/01/09(火) 17:01:19ID:???単に「perlスクリプト内でしたいの」であれば1行毎に
$var =~ s/¥r¥n/¥n/;
をすれば良いのだが、>>714が読み取ったように、
「ファイルの読み書きやらデータのIOをどう処理したら良いか」
ということを聞きたいのか?
0716nobodyさん
2007/01/09(火) 17:07:56ID:???要はWindowsの改行コードをUNIXのものに変えたいということじゃないの?
$textに問題の文字列が入っているとしよう。
$text =~ s/\r\n/\n/g; # Perl
これで$text内の全ての\r\nが\nに変換される。
これはPHPでいう以下のいずれかの構文と同じ処理になる。
$text = preg_replace("/\r\n/", "\n", $text); // PHP: 意味合いとしてはこっちがより正確だが
$text = str_replace("\r\n", "\n", $text); // PHP: PHPではこっちがより推奨される
問題がWindowsとUNIXだけなのであれば、単純に\rを排除するだけでも良い。
$text =~ s/\r//g; # Perl
これはPHPでいう以下のいずれかと同じ処理。
$text = preg_replace("/\r/", "", $text); // PHP: 意味合いとしてはこっちがより正確だが
$text = str_replace("\r", "", $text); // PHP: PHPではこっちがより推奨される
が、これにMacが絡むと改行コードは\rだけだったりすることもありうるわけで、
単純に\rを排除していてはMacでは改行が全て消えて無くなってしまう。
より汎用性を求めるなら以下のようにすべきだろうね。
$text =~ s/\r\n/\n/g; # Perl1: Win -> UNIX
$text =~ s/\r/\n/g; # Perl2: Mac -> UNIX
これはPHPでいう(以下略
$text = preg_replace(array("/\r\n/", "/\r/"), "\n", $text); // PHP: 意味合いとしてはこっちがより正確だが
$text = str_replace(array("\r\n", "\r"), "\n", $text); // PHP: PHPではこっちがより推奨される
もしくは
$text =~ s/\r\n|\r/\n/g; # Perl: 上の1と2をまとめたもの
これはP(ry
$text = preg_replace("/\r\n|\r/", "\n", $text); // PHP: 配列を使わない場合
0717nobodyさん
2007/01/09(火) 17:12:28ID:???以下を hoge.pl で保存
=======
#!/usr/bin/env perl -i.old -p
s/\r\n/\n/ ;
=======
$ perl hoge.pl hoge
じゃダメか?w
しかしソース元の -npe ってなんだかなあ
=====
#!/usr/bin/env perl
for my $name ( @ARGV ){
open IN, $name or die ;
my $data = do { local $/ ; <IN> } ;
close IN ;
rename $name , $name . '.old' ;
$data =〜 s/\r\n/\n/g ;
open OUT, '>' . $name ;
print OUT $data ;
close OUT ;
}
=====
0718nobodyさん
2007/01/09(火) 17:13:48ID:???単なるバックスラッシュに脳内置換よろ
0719nobodyさん
2007/01/09(火) 17:21:51ID:???レスありがとうございます。
perlのスクリプトをちょっと改造したい
(ある変数内のデータから^Mを削除したい)のですが、
systemとかを使うと、ほかの部分も弄る必要性が出てきそうで、
現時点の自分のperl能力からはできれば避けたいと考えてます。
PHPなら下みたいな感じでよい気がするのですが、
同じことをperlではどうすればいいでしょうか。
perlは変数宣言とかが厳しいと聞いたことがありますが、
ほかはphpと似たようなものでしょうか?
$file_array = file( $file_path );
for($i=0; $i<count($file_array); $i++){
$file_array[$i] =~ s/\r\n/\n/;
}
$file_data = implode("\n", $file_array);
0720nobodyさん
2007/01/09(火) 17:31:31ID:???$file_pathに格納されたパスにあるファイルを開いて読み出し、
各行の\rを削り、さらに各行をさらにもうひとつの\nをはさんで
つなげているような。
そもそもPHPとかperl以前に、自分が何をやりたいのか、何をやろうと
しているのかを的確に理解して説明する能力を身につけるべきな気が
するぞ。
0722nobodyさん
2007/01/09(火) 17:38:59ID:???rep2マジお勧め。
>>719
その構文だと各行の間が"2つの"\nで連結されてしまうけどそれでいいのかな?
open(FILE, $file_path);
@file_array = <FILE>;
close(FILE);
for (my $i = 0; $i < @file_array; $i ++) {
$file_array[$i] =~ s/\r\n/\n/;
}
$file_data = join("\n", @file_array);
>>721
おまいも>>719見てからレスれw
■ このスレッドは過去ログ倉庫に格納されています