Perlでリクに答えるスクリプトを作るスレ
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001(・∀・)チンポー!!
NGNGだからリクエストをくれ。
0002デフォルトの名無しさん
NGNG0003(・∀・)チンポー!!
NGNGそうカリカリすんなよ。
なんか嫌な事でもあったのか?
0004デフォルトの名無しさん
NGNGリソース抽出とか
0005デフォルトの名無しさん
NGNG日本語以外(中国語とか)で書き込みされるとログファイルが壊れて
しまいます。
具体的にはnull文字とかで、すべての文字が化けて見えるようになる。
プログラムは〜
require './cgi-lib.pl';
&ReadParse(*form);
$value = $form{"namae"};
require './jcode.pl';
&jcode'convert($value, "sjis", "", "z");
open LOG_SAVE,">>$logfile_name";
print LOG_SAVE $value."\n";
close LOG_SAVE;
として、抽出&エンコードしてるのですが、どのようにすればよいでしょう?
↓参考として、このへんの文字を適当にこぴぺして確認しています。
http://www.fenglin.info/www/home.php
0006デフォルトの名無しさん
NGNG0007(・∀・)チンポー!!
NGNG0008(・∀・)チンポー!!
NGNG0009デフォルトの名無しさん
NGNGHello, world!
を標準出力に出力するスクリプトを書いて下さい
0010デフォルトの名無しさん
NGNG0011デフォルトの名無しさん
NGNGゲームの専門学校に通ってるやつらはそうらしい。
0012デフォルトの名無しさん
NGNG0013(・∀・)チンポー!!
NGNG仕事がひまでこまってんだYO
0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNG成功報酬ははずむから。
0016デフォルトの名無しさん
NGNGふつうに賞金もらえんじゃん
00175
NGNGjcodeでコンバートしてます。
ある程度はいけるのですが、こういうのがだめです。
↓
74728] 主题: 重量級軟件下載大集合
0018デフォルトの名無しさん
NGNGじゃひっかかりそうな文字置換しとけ
0019デフォルトの名無しさん
NGNG0020デフォルトの名無しさん
NGNGではひっかかりそうな文字を置換してみていただけますか?
0021デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG0023デフォルトの名無しさん
NGNG0024デフォルトの名無しさん
NGNGCSVファイルをPDFに整形してプリントするようなスクリプト作ってクレクレ
0025デフォルトの名無しさん
NGNG宝石
0026(・∀・)チンポー!!
NGNG0027デフォルトの名無しさん
NGNG最初からだと思うが。
0028(・∀・)チンポー!!
NGNGじゃぁなんかいいネタ考えてくれよ!
0029デフォルトの名無しさん
NGNGでなければ、自分で盛り上げろ。禿げ
0030デフォルトの名無しさん
NGNG0031(・∀・)チンポー!!
NGNGぐぐれ禿
0032デフォルトの名無しさん
NGNGhttp://www.excite.co.jp/world/chinese/
とかで>>17を繁体字で訳してみるとさー
…何するつもりですか?(笑)
0033デフォルトの名無しさん
NGNG↑
とりあえずこいつを殺すスクリプト考えてみ?
0034デフォルトの名無しさん
NGNGいや、手っ取り早く知ってる中文でググって出てきたサイトに載ってたやつなんで
あんまり気にしないでね。
というか中国は国を挙げての複製大国なので、気にしない気にしない。
それより文字化けの件、自己解決しました。m(_ _)m
0035(・∀・)チンポー!!
NGNG自分で解決しちゃったのかよっ!!
スレの存在意義がなくなっちゃたよっ!!
0036デフォルトの名無しさん
NGNG0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG0039(・∀・)チンポー!!
NGNGそういう風に大人が「抹殺」とか「殺す」とか簡単に言ってるから
小学生がカッターナイフですよ。
0040えさ
NGNG指定したフォルダの中のファイル名と更新時刻(年月日時分秒まで)の一覧を
ファイルに出力するスクリプト。
0041デフォルトの名無しさん
NGNGファイルの情報を取得するには stat 関数
ディレクトリの一覧を得るには glob("*")
ここで質問する前に最低限 Perl の教科書を一冊くらい買っておきなさい。
厨房はオネンネのじかんです。
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNG0044デフォルトの名無しさん
NGNG君みたいな低脳スクリプターに使える物が書けるわけ無いだろ。
0045(・∀・)チンポー!!
NGNG@files = readdir( DIR );
closedir( DIR );
ほれ。これでファイル一覧を配列に取得できるぞ。
あとはてきとーにやれ。
0046デフォルトの名無しさん
NGNG0047デフォルトの名無しさん
NGNG0048(・∀・)チンポー!!
NGNG0049デフォルトの名無しさん
NGNG/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\ ーー__  ̄ ̄///
/| ::::::::/7;;;;;;;;;;;;;;;;;;;;;;;;;;;; \  ̄一,///
/...ヽ:::::::::::|;;;;;;;;;;;;;;;;;;;;;;;....... .\ ̄ー_ ..///
/ / \:::/;;;;;;;;;;;;;;;; _,−〜ヽヾ ヽ///
| ./ /;;;;;;;;;;;;::_/_______~~~~|| /// ∧∧∧∧∧∧∧∧∧∧∧
| | /;;;;;;;;;;;;;;;:/M〜、------;| :| ./// < >
|| /;;;;;;;;;;;;;;;:/.| |:~:: .~`-----: ::::|.../// < F u c k s o R e e n a!>
` /;;;;;;;; / ;;;|| |; r"~`v;:rv~`;l";;;;;;../// < >
∠--" .;;;;;;;.||l.|ゞ``^”:i |i`~/|::::;;;;///ヘ ∨∨∨∨∨∨∨∨∨∨∨
/ |\___ .;;;;;;;|.| ||ミミ;;|mmrl「"/iヽ///| |
/;;;;;; ノ/ ◆\ ;;;;;|| |、ヾiiiiiiirノ/::ヾヾヽ;;;;;丶\
/;;;;;;;; //◆◇◆ヾ_..| f";;;;ヾ` ̄~/:::ヽ"ヾ"ヽ::◆ヽ\
ノ.::::::: /人ヽ◆◇◆|丶_ヾ;;;;;`}{_;::: //ヾ"ヾヽ;;;;;◇ヽ\
/:::::::::::;/::::::::::\ヽ◆◇|;;;;;;;;;;;;;;;;;;;;;;ノ~\///◆ヾヽ()ヽ/;;;;;;;;ヽ
`ソ,/;;;;;;;;;;;;;;;;;/ヽヽ◆|~~~~~~~~~/| |ヽ///◇◆ヽゝノ|;;;;;;;;;;;;;:::\
γ;;;;;;;;;;;;;;;;;;/;;;;;;;;ヾヾ;||~~~~~~~/~...| |.///◆/;;;;;;;ヽ ..| ;;;;;;;;;;;;;;;;;ヽ
/;;;;;;;;;;;;;;;;;;;;;;;/;;;;;;;;;;;;;;;;;ヽ|~~~/~ ....| ///:|/::::::::::::::::::ヾ/|;;;;;;;;;;;;;;;;;;;;;|
/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;|~/~ .......|///::::| :;;;;;;;;;;;;;;;;;;;;;;;;ヾヽ;;;;;;;;;;;;;;;;;|
††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††††
0050SimpleHTTPD.pl
NGNGuse IO::Socket;
$SIG{CHLD} = sub {wait()};
$main_sock= new IO::Socket::INET(LocalHost => 'localhost',
LocalPort => 9999,
Listen =>5,
Proto => 'tcp',
Reuse => 1,
);
$Dfile="index.html";
while($new_sock = $main_sock->accept()){
select($new_sock);
$ |= 1;
select(STDOUT);
$pid = fork();
die "Cannot fork: $!" unless defined ($pid);
if($pid == 0){
while(defined ($buf = <$new_sock>)){
print $buf;
if($buf eq "exit"){close $new_sock}
if($buf=~/^GET\s/){
$buf=~s/^GET\s\/(.*)\sHTTP\/1.\d/
$1/x;
$Dfile=$buf;
print "File $Dfile\n";
0051Dream☆ ◆hG4XfSMGTg
NGNGif($buf=~/^\r\n$/){
print $new_sock "HTTP/1.1 200 OK\r
Server: Apache/2.0.40 (Red Hat Linux)\r
Accept-Ranges: bytes\r
Connection: close\r
Content-Type: text/html; charset=ISO-8859-1\r
\r\n\r\n";
open(FILE,$Dfile);
while(<FILE>){
print $new_sock $_;
}
close($new_sock);
}
#else{print $new_sock "HTTP OK $buf\r\n";}
}#while <>
exit(0);
}#pid
}#while sock
close($main_sock);
0052Dream2 ◆hG4XfSMGTg
NGNGやっちまえーー!!
(⌒∧_∧ ,//∧_∧
バキィ!ヽ( ・∀・) :(⌒ミ( //(´∀` )
バキィ!!ヽ l| |l(:;;:( ドガァ!!///ヽ、 _`ヽゴスッ!!
('⌒;ヾ / '/ li| l!グシャァ!!\从从///'ミ_/ヽドゴッ!!
(⌒)y'⌒;ヾ从从(⌒〜∵;)´⌒`つ,;(´(´⌒;"'ボキボキボキッ
(´⌒ー- ;:#∧_;/// 彡(:::゜;。(;;;)、⌒从;;ノ・`⌒);
(´;⌒(´⌒;;' ~ヽと;;;;。#;;、ミ,,:,,;;;ヽ/ノ:#`""^ヾ⌒));
 ̄ ̄(´⌒;,(´,(゙゙゙'゛""゙゙)゙'';"(´⌒;,(´,(´⌒;)
↑>>1
ギャアアーー
0053(・∀・)チンポー!!
NGNGおまえら荒れるなよ。
こっちはおまえらの夢を叶えてやるんだからよぉ。
なんかなーいなんかなーい?ねぇ!お母さん!!
0054デフォルトの名無しさん
NGNG0055(・∀・)チンポー!!
NGNGしかも今日は誕生日なんだよっ!
誰か祝ってくれ!!
0056デフォルトの名無しさん
NGNG|_∧*;*。
|ー゚)|/
| つ
| `〜
|∪ ハピバス。
0057デフォルトの名無しさん
NGNG/ /ヽヽ__ ' ´ _____,, イ ヽ
,' ,' {_r'‐'',ニ二、ー===-‐'|l 、`、
iヽ i // '´  ̄`ヽヽ l| l i
,' ヽ l / 、>‐=、、 =ニヽ ! l l
,' /⌒ l | ´ /(__,!゛ `、! | ! >>1さん
,' ! '^> |! i。_oソ , ニ、, ノ 丿 糞スレ立てんな、蛆虫、氏ね
,' ヽ ヽ ` ─ '⌒Y, ' / と何故言われるのか
/ |`T 、 j /}´ ,'^! よーく考えましょうね。
/ l l i iヽ i` ーァ /ノ / /
/ | | i i ! \ l_/ ノ | {ヽ / /
,' | | i iノ 丶、 __ , イ | | l } 〃 二ヽ
,' r| | '´\_ / ,' ,′ | | |└'{_/ ,─`、
0058(・∀・)チンポー!!
NGNG0059デフォルトの名無しさん
NGNG祝ってられません
↓これでガマン(・∀・)しる!
\おーだんごーまーるまるー /
\ おーだんごーまーるまるー /
. \ おーだんごーまーるまるー/
∧_∧ ∧_∧ ∧_∧
(・∀・ ) ( ・∀・) ( ・∀・)
⊂ ⊂) ( ) (つ つ
(__(_) (__)_) (__(_)
0060デフォルトの名無しさん
NGNG0061デフォルトの名無しさん
NGNGおまえと同じ誕生日だ。縁起悪い。
0062デフォルトの名無しさん
NGNG0063(・∀・)チンポー!!
NGNGなんだとぉ!?
おまえもシックスナインかぁ?
勝手に俺と同じ日に生まれてんじゃねぇこの天才野郎!
0064デフォルトの名無しさん
NGNGいいのではないか。
0065神山満月 ◆hG4XfSMGTg
NGNG// csc dat2chregex.cs
//2ch dat から リンクを抜き出すプログラム
//C♯の正規表現むずい。もっとなんとかならん?>>1
using System;
using System.Text.RegularExpressions;
using System.IO;
class Grep {
static void Main(string[] args) {
TextReader reader = null;
reader = new StreamReader(
args[0], System.Text.Encoding.GetEncoding(932));
if (reader != null) {
Regex regex = new Regex("ttp");
Regex fase4 = new Regex(@"<br>");
Regex fase3 = new Regex(@"(?<TTP>h?t?tp://[^\s]*)\s*");
string line;
string [] sta;
int i;
while ((line = reader.ReadLine()) != null) {
sta = fase4.Split(line);
for(i=0;i<=sta.Length-1;i++){
Match m=fase3.Match(sta[i]);
if (m.Success) {
Console.WriteLine(fase3.Match(sta[i]).Result("${TTP}"));
}} }
reader.Close();
}
}
}
0066(・∀・)チンポー!!
NGNG0067デフォルトの名無しさん
NGNG0068(・∀・)チンポー!!
NGNG布団が
0069デフォルトの名無しさん
NGNGuse Digest::MD5;
$file=$ARGV[0];
open(FILE, $file) or die "Can't open '$file': $!";
binmode(FILE); $md5 = Digest::MD5->new;
while (<FILE>) {
$md5->add($_);
}
close(FILE);
print $md5->hexdigest, " $file\n";
0070デフォルトの名無しさん
NGNG$kaiueo="アイウエオカキクケコ";
$hkaiueo="アイウエオカキクケコ";
#SHIFT-JIS
#82a082a282a482a682a882a982ab82ad82af82b1
#83418343834583478349834a834c834e83508352
#EUC-JP
#a4a2a4a4a4a6a4a8a4aaa4aba4ada4afa4b1a4b30a
#a5a2a5a4a5a6a5a8a5aaa5aba5ada5afa5b1a5b30a
#8eb18eb28eb38eb48eb58eb68eb78eb88eb98eba
#野口英世cceeb8fdb1d1c0a4
#石原新太郎c0d0b8b6bfb7c2c0cfba
#聖徳太子c0bbc6c1c2c0bbd2
#織田信長bfa5c5c4bfaec4b9
#豊臣秀吉cbadbfc3bda8b5c8
#徳川家康c6c1c0eeb2c8b9af
#吉田兼好b5c8c5c4b7f3b9a5
#紫式部bbe7bcb0c9f4
#光源氏b8f7b8bbbbe1
0071(・∀・)チンポー!!
NGNG0072デフォルトの名無しさん
NGNGsub dumpvar{
my($packageName) = @_;
local(*alias);
*stash = *{"${packageName}::"};
$,= " ";
while(($varName,$globValue)=each %stash){
print "$varName ================== \n";
*alias = $globValue;
if(defined ($alias)){
print "\t \$$varName $alias \n";
}
if (defined (@alias)){
print "\t \@$varName @alias \n";
}
if(defined (%alias)){
print "\t \%$varName",%alias," \n";
}
}
}
1;
0073デフォルトの名無しさん
NGNG「ア」
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNGそんなのはますぞいさんにたのめよ
0076デフォルトの名無しさん
NGNG0077デフォルトの名無しさん
NGNG/ ____ヽ /  ̄  ̄ \
| | /, −、, -、l /、 ヽ
| _| -| ・|< || |・ |―-、 |
, ―-、 (6 _ー っ-´、} q -´ 二 ヽ |
| -⊂) \ ヽ_  ̄ ̄ノノ ノ_ ー | |
| ̄ ̄|/ (_ ∧ ̄ / 、 \ \. ̄` | /
ヽ ` ,.|  ̄ | | O===== |
`− ´ | | _| / |
| (t ) / / |
perl書きなんだがさ、こうリクに答えてなんか作りたいんだ。
0078(・∀・)チンポー!!
NGNG0079デフォルトの名無しさん
NGNG0080(・∀・)チンポー!!
NGNG0081デフォルトの名無しさん
NGNG***.plをWindows上で動作する***.exeを作ってください。
perl2exeみたいなのを作っておくれ、シェアいらね
0082デフォルトの名無しさん
NGNGC・C++が書けない
厨房がよく欲しがるツールだよなぁ
0083デフォルトの名無しさん
NGNG作れねーんなら黙ってろハゲ!
0084デフォルトの名無しさん
NGNG0085デフォルトの名無しさん
NGNG上記「アクセス解析」の左上「生ログ」をExcelで使用できるデータに
変換したいのです。以下のような形式です。
「項目1」「\s」「値」「,」「項目2」「\s」「値」「,」...「項目14」「\s」「値」「改行」
1件当たりの総項目数は14件と決まっているのですが、
各件で吐き出される項目はマチマチで項目自体が無い場合があります。
項目をあらかじめ設定しておき、正規検索で改行などを取り除きつつ、
検索がマッチした場合には項目ごとに値を入れ、項目の値が項目自体が
無い場合にも - などを入れるようにして総項目数が揃ったデータにしたい
ということです。どのようにすればできるでしょうか?
よろしくお願いします。
008685
NGNG2004/06/17 18:11:30 ・(注:日付時刻です)
ページ (注:解析対象ページのこと)
ページ回数
サイト回数
前回
初回
モニタ
JavaScript
Cookie
HTTP_REFERER
HTTP_USER_AGENT
国/言語
REMOTE_HOST
Proxy情報
008785
NGNG2004/06/17 18:11:30 ・
ページpxpxpx
ページ回数39 サイト回数39 前回2004/06/16 23:27:02 初回2004/06/16 0:59:36
モニタ1024 x 768 x 16bit JavaScriptTrue CookieTrue [extract]
HTTP_REFERERブックマーク
HTTP_USER_AGENTMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.23 [ja]
国/言語日本語
REMOTE_HOSTfllllp000.xxx.xxx.ad.jp
Proxy情報△
2004/06/17 18:09:02 ・
ページ冬05
ページ回数5 サイト回数5 前回2004/06/17 10:36:47 初回2004/06/16 15:26:20
モニタ1024 x 768 x 32bit JavaScriptTrue CookieTrue [extract]
HTTP_REFERERブックマーク
HTTP_USER_AGENTMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.5); .NET CLR 1.0.3705; .NET CLR 1.1.4322)
国/言語日本語
REMOTE_HOSTnthkid000000.xxx.xxx.ftth.ppp.xxxx.ne.jp
2004/06/17 13:53:07 ・
ページ秋03
ページ回数12 サイト回数12 前回2004/06/17 13:01:33 初回2004/06/16 14:47:05
モニタ1024 x 768 x 32bit JavaScriptTrue CookieTrue [extract]
HTTP_REFERERブックマーク
HTTP_USER_AGENTMozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; (R1 1.5); .NET CLR 1.0.3705; .NET CLR 1.1.4322)
国/言語日本語
REMOTE_HOSTnthkid011111.xxx.nt.ftth.ppp.xxxxx.ne.jp
008885
NGNGあらかじめ項目を決めたものに入れていくことまでができません・・・
s/(^20)(.+)(・)(\n)/時間 $1$2$3,/g;
s/(ページ)([0-9]+)(\s\s\s\s)/\1 \2,/g;
s/(ページ回数)([0-9]+)(\s\s\s\s)/\1 \2,/g;
s/(サイト回数)([0-9]+)(\s\s\s\s)/\1 \2,/g;
s/(前回)(.+)(\s\s\s\s)/\1 \2,/g;
s/(初回)(.+)\n/\1\2,/g;
s/(モニタ)(.+)(bit)/\1 \2\3/g;
s/(JavaScript)(.+)(\s\s\s\s)/\1 \2,/g;
s/(Cookie)(.+)\n/\1 \2,/g;
s/(HTTP_REFERER)(.+)\n/\1 \2,/g;
s/(HTTP_USER_AGENT)(.+)\n/\1 \2,/g;
s/(国\/言語)(.+)\n/\1 \2,/g;
s/(REMOTE_HOST)(.+)\n/\1 \2,/g;
s/(Proxy情報)(.+)\n/\1 \2,/g;
008985
NGNG11ステップで例外などに対応してみました。
エディタの方言で $1→\1 です。
検索/置換 になってます。
1(ページ回数)(.+)(\s\s\s\s)(サイト回数)(.+)(\s\s\s\s)(前回)(.+)(\s\s\s\s)(初回)(.+)\n/\1 \2,\4 \5,\7 \8,\10 \11,
2(モニタ)(.+)(bit)(\s\s\s\s)(JavaScript)(.+)(\s\s\s\s)(Cookie)(.+)\n/\1 \2\3,\5 \6,\8 \9,
3(HTTP_REFERER)(.+)\n/\1 \2,
4(HTTP_USER_AGENT)(.+)\n/\1 \2,
5(国\/言語)(.+)\n/\1 \2,
6(REMOTE_HOST)(.+)\n/\1 \2,
7(Proxy情報)(.+)/\1 \2
8(,)(20)(.+)(\n)(ページ)(.+)(\n)(ページ回数)/\1\n時間 \2\3,\5 \6,\8
9(^20)(.+)(\n)(ページ)(.+)(\n)(ページ回数)/時間 \1\2,\4 \5,\7
10(,)(20)(.+)(\n)(ページ)(.+)(\n)(回数\s)(.+)(\s)(前回)(.+)(\s)(前ページ)(\(JavaScript無効\))(\n)(モニタ)(.+)(\n)/\n時間 \2\3,\5 \6,\8\9,\11 \12,\14 \15,\17 \18,
11(^20)(.+)(\n)(ページ)(.+)(\n)(回数\s)(.+)(\s)(前回)(.+)(\s)(前ページ)(\(JavaScript無効\))(\n)(モニタ)(.+)(\n)/時間 \1\2,\4 \5,\7\8,\10 \11,\13 \14,\16 \17,
0090デフォルトの名無しさん
NGNG0091(・∀・)チンポー!!
NGNGおまえが腐臭だよ。
なんだんだおまえは。
わざわざ「腐臭スレ」と発言することによっておまえは何を得たいのか。
それを言う事によりおまえになにか利益が発生するのか?
なぁ、>>90よ。なにか会社や学校、又は家庭で嫌な事があったのか?
彼女とケンカでもしたのか?
俺なんて最近昔の女に
「あんたに前殴られたよね。訴えるから。訴えられたくなかったら慰謝料よこしな。」
とか言われたよ…。
こんな俺でも一生懸命生きてるんだ!!
生きてるんだ!!
俺が言いたいのはそれだけだ…。
0092デフォルトの名無しさん
NGNG一気にデータを変換しようとしないでワンステップおいてみな
ログ>変数にバラして格納>エクセル用に書き出す
0093デフォルトの名無しさん
NGNG0094(・∀・)チンポー!!
NGNG誰かレス書いてよぉ!!
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNG0097デフォルトの名無しさん
NGNG↑のような
画像掲示板に自動で画像をアップロードするスクリプトをお願いします。
0098デフォルトの名無しさん
NGNG俺もそういうの前から欲しいと思ってた。
perlで作れるのかな?
010097
NGNGうpおねがいします
0101デフォルトの名無しさん
NGNGを、一文字ずつ、配列に格納していくためのルーチン
をこのように書いたのですが↓
for( $i=0; $str; $i++) {
$str =~ s/(.)(.*)/$2/;
$flag[$i] = $1;
}
もっとスマートに書けないでしょうか?
0102デフォルトの名無しさん
NGNGsubstr じゃだめなの?
0103デフォルトの名無しさん
NGNGしばらくぶりだったのでsubstrの存在をすっかり忘れてました。
ありがとうございます
0104デフォルトの名無しさん
NGNG今回、メン募を作りたくIDで振り分けたページを自動生成をするという機能が欲しくて
色々、本屋やサイトで調べてみたのですが、どれを勉強すればいいか?というところから分かっておりません。
具体的に言いますと、訪問者がサイトで個人情報を書きサーバーへ送信>サーバーからIDとPASSが送られてくる>サイトへ送られてきたIDとPASSを記入>自動生成されたページを各自でカスタマイズ
その後そのカスタマイズで更新された物をサイトメインページにて随時公開したいのですが、出来るだけオリジナルで作りたいと思っています。どのようなことを勉強すべきか教えてください。
参考までに、理想に近いサイトがあるので
よければこちらも見てください。
http://www.muzie.co.jp/
http://www.with9.com/
0105デフォルトの名無しさん
NGNGBASICやったことがあると言うだけで
datファイルからページを表示するcgiを作れと言われて
いろんなページを回って、アルゴリズムは出来たんですが
どうしてもサーバーエラーが出て動作の確認すら出来ません・・・
内容的には簡単なことだと思うのですが
data.datと言うファイルに1行ごとに,で区切られた4つのデータがあって
それを、読み込んで判断してhtmlとして出力するというものです
a1,b1,c1,d1
a2,b2,c2,d2
a3,b3,c3,d3
と言うのがずっと続いていて
ファイルを読み込んで配列に入れて、先頭から4個づつデータを取りだして
a,b,cにデータの種類コードが入っていてdに内容が入っているので
if文で判断して表示してデータが無くなったら終わればいいようなのですが
おそらくファイルのオープンとロックで引っかかってると思うので
同一ディレクトリにあるファイルをオープンして内容を読み込み
クローズして終了するような例を教えてもらえないでしょうか?
見て回ったページにある例を入れてみてもcgiエラーが出てしまったので
よろしくお願いします・・・
あと、できればプログラムが何処まで進んだのか調べる方法が有れば
教えてくださいm(_ _)m
0106デフォルトの名無しさん
NGNG>教えてくださいm(_ _)m
…え?
0107105
NGNGBASICでいえばストップ命令みたいなもので
ここまで来たら命令を止める
もしくは、ここまでは異常なくプログラムが走ったと言うことを
確認できるような方法といういみです
言葉足らずですいませんでした
あと、なんとかdatから配列に読み込めたんですが
,で区切って読み込んでくれるものかと思ってたら
1行纏めて読み込んでしまってそこではまってます・・・
とりあえず、最初の質問については自己解決しましたので
また詰まったときによろしくお願いしますm(_ _)m
0108デフォルトの名無しさん
NGNG途中でprintでもしとけよ。
まったく、なんでこんな奴にまかせるかなぁ...
0109デフォルトの名無しさん
NGNGBASICやったことがあるってのもハッタリだったということで。
小学生の漏れでもそれくらい気がついてたぞ。20年前だがな!(遠い目)
区切りで分けるときは split使え!それとperlの資料くらいは参照しとけ!!
http://www.orange.ne.jp/~kibita/n88/
0110デフォルトの名無しさん
NGNGWin32::API使おうとすると、最初は入ってなかったり構造体定義したり、なんかいろいろいろいrぉ面倒です。
0111デフォルトの名無しさん
NGNG例えば現在時刻が 21::00 だとすると
次に表示されるのが 30分後の 21:30って具合に…
なるべくなら自分で作りたいのでアドバイスとかあったら教えてください。
すれ違いですみませんが
0112デフォルトの名無しさん
NGNG現在時刻の分で場合分けすればいいと思う。
0113デフォルトの名無しさん
NGNG[1]を[2]にするようなスクリプトを作りたいのですがアドバイスお願いします
[1]
中 央1丁目591 281 310 218 2丁目602 315 287 227
2丁目522 256 266 179 大字南篠崎1130 559 571 352
本 町831 396 435 301 花 崎1丁目1459 749 710 604
[2]
中央1丁目,591,281,310,218,2丁目,602,315,287,227
2丁目,522,256,266,179,大字南篠崎,1130,559,571,352
本町,831,396,435,301,花崎1丁目,1459,749,710,604
0114デフォルトの名無しさん
NGNGs/(\D)(\d)/$1 $2/g;
s/ /,/g;
s/(\D),(\D)/$1$2/g;
とかどうかな。駄目ですか。そうですか。
0115デフォルトの名無しさん
NGNGありがとうございます。
解決できそうです。
0116デフォルトの名無しさん
NGNGおいコラ!
他スレで解決済みじゃないのかよ
これだからマルチ質問はやめれってことなんだよ
0117デフォルトの名無しさん
NGNGの37なのですが、ここに転載するのはマルチになりそうで怖いのですが
本家はこちらな気がしましたので書き込ませて下さい。
(刷れ汚しになりそうなので本文は書きません)
参照して作成して下さる
P e r l の 神
とゆう猛者の光臨を待ち焦がれてしまいます。
住人の願い叶えてたもう。お願いします
ヾ
(´Д`;)、 コノトオリデス
ノノZ乙
0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNG但し、CGI限定な
0120デフォルトの名無しさん
NGNG中略
プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
Javascript は Web 制作板、CGI は Web プログラミング板へ。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
0121デフォルトの名無しさん
NGNGウェブP板にこんなスレをわざわざ立てるのかと(ry
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNG0124(・∀・)チンポー!!
NGNGそれくらいすぐ作れるべ
0125デフォルトの名無しさん
NGNG>>118へのレスだったら面白かったな。
0126117
NGNGやる気あぼーん。諦めモード入ってました。
>124様
本当ですか。神!!光臨して下さったら末代まで
称えます。
近代WindowsGUIの提供する
素晴らしき(手作業がでふぉの石器時代みたい)
なエクスペリエンスに疲れますた。
システマチックに自動化された環境!!
それは未知のエクスペリエンス。
未知のエクスペリエンスしたいです。
きっとソフト板の多くのユーザーが未経験な
エクスペリエンス。対話しないとなんにも
出来ない、OPいないと動かないPC環境脱却したい
し、使った人も驚くと思います。
なので是非作成して欲しいです。
ネタじゃなくて期待してしまいます。
0127デフォルトの名無しさん
NGNG0128117
NGNGネタならまぁ、あれだ、その。。。。。
うぇーん。
0129デフォルトの名無しさん
NGNG廻り方をccwだとした時、始点から見た円弧の中心x0,y0を求める。
ただし、ccwは、時計回りが-1、反時計回りが+1
半径rがプラス値のとき近回り、マイナスのとき遠回りの円弧で、
円弧が丁度半円の時は正負どちらでもよい。
って、いうスクリプトをperl5.004対応で、お願いします。m(_ _)m
sub quest_arc_center($$$$){
my($iX,$iY,$r,$ccw) =@_;
my($x0,$y0);
# ここをプリーズ
return ($x0,$y0);
}
ex)
my($iX,$iY,$r,$ccw) =(5,5,5,-1);
my($x0,$y0) =quest_arc_center($iX,$iY,$r,$ccw);
print "x$x0, y$y0\n";
=> x5.000, y0.000
0130129
NGNG皆様のお知恵を拝借して、洗練されたスクリプトに変えたいと思います。
use strict;
# my($x0,$y0) =quest_arc_center($iX,$iY,$r,$ccw);
sub quest_arc_center($$$$){
my($iX,$iY,$r,$ccw) =@_;
die '半径0' unless( $r+0 );
my$R =abs($r);
my$Dia = 2*$R;
my$Line = sqrt( $iX**2 + $iY**2 );
die '半径が小さい' if( $Dia < $Line );
my$PI =abs(atan2(0,-1));
my($Xhf,$Yhf) =($iX/2,$iY/2);
my($I,$i,$J,$j);
0131129
NGNGunless( $iY+0 ){
($I,$J) =( $Xhf, sqrt( $R**2 - $Xhf**2 ) );
($i,$j) =( $I, -$J );
}else{
my$XvY = $iX / $iY ;
my$ey = - $Yhf - $XvY*$Xhf;
my$ev = 2*( $XvY**2 + 1 );
my$ex = 2*$XvY*$ey;
my$er = $ey**2 - $R**2;
my$es = 0;
$es = sqrt( $ex**2 - 2*$ev*$er ) if( abs($Dia-$Line) > 0.002 );# 180°以外
$I = ( -$ex + $es )/ $ev ;
$i = ( -$ex - $es )/ $ev ;
$J = $Yhf + $XvY*$Xhf - $XvY*$I ;
$j = $Yhf + $XvY*$Xhf - $XvY*$i ;
}
my$rad =atan2($iY-$J,$iX-$I) - atan2(-$J,-$I);
if($rad<0){ $rad = $rad - $PI }
else{ $rad = $PI - $rad }
($I,$J) =($i,$j) if( $r*$rad*$ccw < 0 );
for($I,$J){ $_ =sprintf("%.3f",$_) };
return( $I, $J );
}
0132デフォルトの名無しさん
NGNG>「あんたに前殴られたよね。訴えるから。訴えられたくなかったら慰謝料よこしな。」
よく考えたら、どの道お金払うことになってしまい
脅しにはなっていないような・・・
0133デフォルトの名無しさん
NGNG最近はカス見たいな女もいるんだな
言葉は悪い、腹も黒い
特にあいつらの負けん気満々の目が嫌だ
自分以外は「キモイ」で即斬
「誰にも迷惑かけていない」などの
自分正当化議論(屁理屈)をいっぱい持っており
危なくなるとそれを持ち出してくる
0134129
NGNGなにぶん、過疎のような気がいたしまして別スレに誘導のつもりで、
カキコしたものにレスがついてしまいました。
私が「レスはこちらで」と書き加えなった為です。
今後は↓に移ります。ごめんなさい。
Perlについての質問箱 14箱目
http://pc5.2ch.net/test/read.cgi/tech/1101649274/l50
結果、マルチになってしまったことをお詫びします。
すいませんでした。
0135(・∀・)チンポー!!
NGNG0136デフォルトの名無しさん
NGNG0137デフォルトの名無しさん
NGNG0138デフォルトの名無しさん
NGNG0139デフォルトの名無しさん
NGNGブラウザ作ってくれ
0140デフォルトの名無しさん
05/01/18 22:49:290141デフォルトの名無しさん
05/01/18 22:53:39ま、皇居一週かな。
0142デフォルトの名無しさん
05/01/27 03:15:550143デフォルトの名無しさん
05/01/27 10:05:29糸冬  ̄了
0144デフォルトの名無しさん
05/01/28 10:41:000145デフォルトの名無しさん
05/01/28 12:41:13http://pc5.2ch.net/test/read.cgi/php/1102980903/
0146デフォルトの名無しさん
05/01/28 21:04:00動かないようにするにはどうしたらいいでつか?
0147デフォルトの名無しさん
05/01/28 22:37:57パラメータをアドレス打って直接渡したら
動かないようにするといいです。
0148ゆうこりん
05/02/01 23:52:571、1月1日が土曜日の平年について、曜日の入力データからその月日
をすべて表示する。
2、2つのファイル{英文と日本訳}を読み込み、行数を数えながら、
表示し、新しいファイルを作成する。
マジわからなくて困ってます!よろしくお願いします!
0149デフォルトの名無しさん
05/02/01 23:58:54こういうバカが絶対に業界に来ないようにする方法って
ないものだろうか。
0150ゆうこりん
05/02/02 00:17:510151デフォルトの名無しさん
05/02/02 09:48:520152デフォルトの名無しさん
05/02/08 03:26:100153デフォルトの名無しさん
05/02/08 03:49:220154デフォルトの名無しさん
05/02/08 19:52:001.1 def
1.2 gh
2.kkk
2.1 jj
2.2 aa
↑
こんな感じに変換したいんだけど 。
0155デフォルトの名無しさん
05/02/08 21:18:43すればいいじゃない。
0156154
05/02/08 22:59:12アプローチの仕方が分からないので、せめてどんなコマンド使えばできる、っていうの
だけでも教えてください。
行数表示はcat -n ファイル名だっていうのは分かってるんだけど、
それだと、1は1のグループで番号表示っていうのができないんです。
0157デフォルトの名無しさん
05/02/09 00:03:100158デフォルトの名無しさん
05/02/09 03:49:27元のフォーマットも知らずに変換が出来るか、ボケ。
0160デフォルトの名無しさん
05/02/09 14:42:05#!/usr/bin/perl
while (<STDIN>) {
s/<a href=.*<dl><dt>// ;
print;
}
というスクリプトを書きました。
<a href=から始まって<dl><dt>で終わる部分までを削除するつもりでしたが
うまく動作してくれません。何か間違ってますか?
他に何かいいスクリプトがあったら教えて下さい。よろしくお願いします。
0161デフォルトの名無しさん
05/02/09 15:36:550162154
05/02/09 17:18:58<li>abc
<li>def
<li>gh
<ol>
<li>kkk
<li>jj
<li>aa
</ol>
</ol>
こういうデータを>>154のように見出しをつけて変換したいんです。
どのコマンド使えばいいですか
0163デフォルトの名無しさん
05/02/09 17:21:48lynx
0164デフォルトの名無しさん
05/02/09 17:46:07それは >>154 にならない
1.abc
2.def
3.gh
3.1kkk
3.2jj
3.3aa
だろ?
0165デフォルトの名無しさん
05/02/09 17:55:51あ、すみません、間違えてました。
>>162だと>>164になりますね。
その3の中にある、3.1とか3.2というのは、catの中にまたcatですか?
0166デフォルトの名無しさん
05/02/09 18:26:440168デフォルトの名無しさん
05/02/09 21:15:20データの形式がそれで正しいならこんな感じでいけないかな?
while ( <> ) {
if ( /<ol>/ ) {
$num1++;
undef($num2);
next;
}
if ( /<li>(.+)/ ) {
$val = $1;
unless ( $num2 ) {
print $num.". ".$val;
$num2++;
} else {
print "\t".$num1.".".$num2.". ".$val;
$num2++;
}
}
}
ちなみに、動作確認してないので。動くかどうか知らんがw
>>166 スマソ m(_ _)m
0169160
05/02/10 12:29:12ありがとうございます。「最大一致」ということで確認して改行も一致させるということで
以下のように書き換えました。他にもいろいろ試行錯誤すること8時間・・・
お願いします。htmlソースから余分な部分を削除するスクリプトを教えて下さい。
僕にはもう限界です・・・
#!/usr/bin/perl
while (<STDIN>) {
s/<a href=.*<dl><dt>//s ;
print;
}
0170デフォルトの名無しさん
05/02/10 17:01:23「余分な部分」だってさ(ゲラゲラ)
0171デフォルトの名無しさん
05/02/10 18:52:100172デフォルトの名無しさん
05/02/10 21:10:50お願いします。
0173デフォルトの名無しさん
05/02/10 22:39:43並列ならthread/pthread
分散ならrpc,soap,corbaかな
とにかく其の知識がないとperlでやろうとするなんて無理だべ
0174デフォルトの名無しさん
05/02/10 22:42:290175デフォルトの名無しさん
05/02/10 22:46:47ちょっとした遊びでコードを書いたりするのは君には理解できないんだろうよ。
0176デフォルトの名無しさん
05/02/10 22:48:470177デフォルトの名無しさん
05/02/10 23:11:560178デフォルトの名無しさん
05/02/10 23:14:53こんな感じ?
undef $/;
open ( IN, "test.htm" ) or die "boo!";
$data = <IN>;
close( IN );
$data =~ s/<a href=.*?<dl>.*?<dt>//gs;
print $data;
0179デフォルトの名無しさん
05/02/11 10:27:510180デフォルトの名無しさん
05/02/11 12:43:59つ[perldoc thread]
0181デフォルトの名無しさん
05/02/15 07:58:35<a href="URL">タイトル</a>
という具合に自動で整形してくれるスクリプトってないですか?
モジュールは「HTML-Parser-3.36」が使えます。
0182デフォルトの名無しさん
05/03/12 07:18:12Perl使え
0183デフォルトの名無しさん
05/03/12 16:06:20Perlみたいな糞言語は使うな。
0184デフォルトの名無しさん
05/03/12 16:17:130185デフォルトの名無しさん
2005/03/23(水) 22:00:570186デフォルトの名無しさん
2005/03/23(水) 23:21:070187デフォルトの名無しさん
2005/03/24(木) 17:06:140188デフォルトの名無しさん
2005/03/25(金) 13:15:420189デフォルトの名無しさん
2005/03/26(土) 14:47:40今時柄付きブラなんて付けてるオンナなんて… い な い わ よ
0190デフォルトの名無しさん
2005/03/26(土) 20:37:08何だこれ
0191デフォルトの名無しさん
2005/03/28(月) 01:12:33また、ユーザー一覧を見ることが出来、所持金や名前でソート可能。
見たいなのお願いします
01921じゃないけど
NGNG[無理な物]
既存CGIと違いがないもの
既存CGIの改造
大規模すぎるもの
一週間後にまとめて公開します
0193デフォルトの名無しさん
NGNG0194デフォルトの名無しさん
NGNG過去スレにいろいろあるよ。ひまつぶしに出来そうなの。
0195デフォルトの名無しさん
NGNG0196デフォルトの名無しさん
2005/04/03(日) 16:41:54指定した数値ぶんの長さの文字列を生成するスクリプト
0197192じゃないけど
2005/04/03(日) 17:15:32sub print_str_rand {
for(1..$_[0]){ printf('%c', int(rand(94)) + 32); }
}
0198デフォルトの名無しさん
2005/04/03(日) 17:53:21有限個の荷物のサイズ・重量と配達地域が与えられときに、送料が最小となるための荷物の詰め込み方
(どのゆうパックの箱にどの荷物をどういう向きで詰め込むのか)を求めるプログラム。
0199デフォルトの名無しさん
2005/04/03(日) 17:54:340200デフォルトの名無しさん
2005/04/03(日) 17:59:05この場合、荷物の向きは6通りです。
0201デフォルトの名無しさん
2005/04/03(日) 18:19:360202200
2005/04/03(日) 19:06:32底面がこの3種類のどれかになるのですが、ひとつの底面について、たて向き・よこ向きの2通り出来るので、
立体の向きとしては6種類あります。
別の考え方をすると、空間のx, y, z方向に直方体の辺X, Y, Zを対応させるとすると、
例えば「YZX」と書いたら、空間のx軸と直方体のY辺が平行で、y軸とZ辺が平行で・・・という意味にすると
結局、X, Y, Z の文字列としての並べ方と直方体の向きが対応します。3文字の順列になるので6通り。
問題自体は、数学的には「すべての組み合わせを調べつくすしか解法がない」という類いものらしいです。
0203デフォルトの名無しさん
2005/04/03(日) 20:53:56俺的には、解答として提出された詰め込み方計算プログラムよりも
その解答プログラムが「最小」の詰め込み方を正しく出力している
かどうかを検査する手法のほうが興味あるな。
「正解」を出せるかどうかは目視のコードレビューで判断するのか、
それとも機械的に適切なテストを行うのか、ほかの方法を使うのか
どうするつもりなんじゃい?
0204デフォルトの名無しさん
2005/04/03(日) 20:59:30http://www.post.japanpost.jp/service/parcel/you_pack/index.html
参考に
0205デフォルトの名無しさん
2005/04/03(日) 21:10:55この問題の場合
ああいうのは考えないという方向でいいの?
0206200
2005/04/03(日) 23:28:01> 類のもの「らしい」っていうのが微妙だな。
数学的には「NP問題」と呼ばる種類の問題で、こういう詰め込みの問題では、
例えば「ビンパッキング問題」とか「ナップサック問題」というのがあります。
これらの有名な問題とは設定が微妙に違うんですが、本質的な難しさは同じなんじゃないかということで
「類いのものらしい」と(「の」が抜けてましたが)書きました。
半分ネタなので、そのプログラムが本当に正しいかの検査はおいといて、
まずは実際に計算するプログラムが先ということで。
>>205
> たとえば、置く方向決まってる奴あるけど
そういうのは考えなくていいことにします。
下の荷物が潰れるとか、そういうのも考えなくていいです。
0207デフォルトの名無しさん
2005/05/04(水) 04:43:240208デフォルトの名無しさん
2005/05/08(日) 16:47:32HTML置き換え
複数のHTMLファイルに書かれているタグを置き換える
<!-- ゙File.txt゙ --><!-- // --> みたいなタグの間に゙File.txt゙の内容を書き込む
SSIだと負荷が高いので゙File.txt゙を変更した場合のみ更新したいのです。
すべてのページに同じヘッダーを付けたり著作権表示の年を一度に変えたりできるのでお願いします
0209デフォルトの名無しさん
2005/05/09(月) 08:38:080210デフォルトの名無しさん
2005/05/10(火) 03:53:37require 5.8.5;
use utf8; use open ":utf8"; binmode STDIN, ":utf8"; binmode STDOUT, ":utf8";
$pat='<!--\s゙(.+)゙\s-->';
while(<STDIN> && !$_=~$pat) print;
!eof STDIN or die;
print;
open FILE,"<$1";
foreach(<FILE>) print;
$pat='<!--\s\/\/\s-->';
while(<STDIN> && !$_=~$pat){}
print;
foreach(<STDIN>) print;
0211デフォルトの名無しさん
2005/05/10(火) 10:06:19CGIでリンク集を作れるフリーソフトをダウンロードしたのですが
検索したときに「1件〜10件を表示」などのような、いくら見つかった
という表示がしないものでした。どうしたら表示できるようになるのでしょうか?
初心者のため、まったくわかりません。よろしければ教えてください。
0212デフォルトの名無しさん
2005/05/10(火) 16:36:25ちなみにサバではなくMacOSXのTerminalでPerlを動作させるつもりです。
0213デフォルトの名無しさん
2005/05/10(火) 16:38:060214デフォルトの名無しさん
2005/05/10(火) 19:26:41POST
0215デフォルトの名無しさん
2005/05/18(水) 02:14:25$_=$ENV{QUERY_STRING};
s/\+/ /g;
s/%([\da-fA-F]{2})/chr hex$1/eg;
eval;
0216デフォルトの名無しさん
2005/05/26(木) 02:42:35でも僕がしたいのは日本語とスペイン語の直接の相互変換なのです。
そこで、日本語、ないしスペイン語の文字列を入力したとき自動的に英語を経由してスペイン語、日本語に翻訳するスクリプトをお願いします。
win環境で手軽に使えるインターフェースを装備してくれると非常にありがたいです。
よろしくお願いします.
0217デフォルトの名無しさん
2005/05/30(月) 19:31:37-e -f g h
(以下数千万行続く)
このような数列が記録されたファイルがあります。左2列が負数、右2列が正の数です
これらの数列に関しての処理をしたいと思っています
上の例で言うところの、-aと-b、cとdをそれぞれ比較し、負数同士ならばより小さいほうを、正ならばより大きいほうを選んで、
-x y
-z w
(以下数千万行)
というような処理をしたいのです
よろしくお願いします
0218デフォルトの名無しさん
2005/05/30(月) 22:46:24#!/usr/bin/perl
open(IN,"filename@ARGV");
@cmd = <IN>;
close(IN);
foreach $cmd (@cmd) {
@temp = qw( @cmd );
if ( $temp[0] <= $temp[1] ) {
print "$temp[0] " ;
} else {
print "$temp[1] " ;
}
if ( $temp[2] >= $temp[3] ) {
print "$temp[2] " ;
} else {
print "$temp[3] \n" ;
}
}
0219デフォルトの名無しさん
2005/05/31(火) 16:16:44普通のマシンにはつらそうだし(不可能?)、遅くなるだろうが。
0220デフォルトの名無しさん
2005/05/31(火) 21:52:51<media src="..\..\レンタルCD等\Antonio Carlos Jobim - Wave\Wave.mp3" tid="{7FDC9124-2E56-428E-A92B-2F64EECAECDF}"/>
<media src="..\..\レンタルCD等\Antonio Carlos Jobim - Wave\The Reb Blouse.mp3" tid="{7957C487-E402-4ED7-B164-EF08C59BFB6A}"/>
<media src="..\..\レンタルCD等\Antonio Carlos Jobim - Wave\Look To The Sky.mp3" tid="{55D5B309-0D86-4227-85DC-A74D3499BD1F}"/>
<media src="..\..\レンタルCD等\Antonio Carlos Jobim - Wave\Batidinha.mp3" tid="{EA9F7A38-6D42-4172-925C-E1DB6A8770E9}"/>
今、プレイリストは上記のようになってるんですけどこれの ..\..\レンタルCD等 を変えて絶対パスで G:音源 にしていただきたいんです。
プレイリストファイル(.wpl)は数百あって、日付順に全て読み込んでそれぞれ変えていってほしいんです。
どなたかお願いできますか?勝手言って申し訳ございません。
0221デフォルトの名無しさん
2005/05/31(火) 23:49:14えっと、【レンタルCD等】を【違法ピーコ】に変えるんだな。
簡単だ。ちょっと待て。
あれっ・・・
ttp://www.keishicho.metro.tokyo.jp/anket/thanks2.htm
0222デフォルトの名無しさん
2005/06/01(水) 22:03:13戻り値型 関数名(引数型);
こんな感じ。
int hoge(int, int);
0223220
2005/06/02(木) 19:58:060224デフォルトの名無しさん
2005/06/02(木) 20:27:17perl -ne "chomp; print qq($_\n) if /^\w.*\)$" foo.c
0225デフォルトの名無しさん
2005/06/03(金) 01:02:52うちで試した限りでは抽出できたがどっかまずいとこあるかもしれん
#
# test.pl infile outfile
#
open(IN,$ARGV[0]) or die("can't open $ARGV[0].\n");
open(OUT,'>'.$ARGV[1]) or die("can't open $ARGV[1].\n");
while(<IN>){
nextunless(/^\s*((\w+\s+)*[\w\*]+)\s+(\w+)\(([^\)]+)\)/); # 末尾に;つければ定義部のみ拾えるだろう
my $type = $1;
my $func = $3;
my $expr = join(' ',$4 =~ /([\w\*]+)\s+\w+[\,\s\)]/g);
$expr = 'void'if(!$expr);
print OUT "$type $func\($expr\);\n";
}
close(IN);
close(OUT);
0226220
2005/06/03(金) 07:49:010227デフォルトの名無しさん
2005/06/03(金) 23:55:360228デフォルトの名無しさん
2005/06/04(土) 16:40:14プロトタイプ宣言をしてるとだぶるよ。
あと、引数型をvoidにしないでくれよ。
0229デフォルトの名無しさん
2005/06/04(土) 18:43:12ファイルの各行を順に読み込んで例えば「A」を「B」に変換していくようなのは
どう書けばいいんでしょうか?
0230デフォルトの名無しさん
2005/06/04(土) 20:02:35#!/usr/bin/perl
use encoding q/shift_jis/;
use Encode;
@files = <$ARGV[0]/*.wpl>;
$dir = quotemeta qq/..\..\レンタルCD等/;
$/ = undef;
for (sort { -M $b <=> -M $a } @files) {
open(FH, "<:encoding(shift_jis)", $_) or die $!;
$content = <FH>;
$content =~ s/$dir/G:音源/g;
close FH;
open(FH2, ">:encoding(shift_jis)", $_) or die $!;
print FH2 $content;
close FH2;
}
実行時引数に.wplのあるディレクトリパスを指定汁
0231225
2005/06/04(土) 20:04:05$expr = 'void'if(!$expr);
を削る。以上。あとやる気起きん。
0232デフォルトの名無しさん
2005/06/04(土) 20:05:470233デフォルトの名無しさん
2005/06/04(土) 20:16:49複数行に跨る宣言が拾えないのでは。
0234デフォルトの名無しさん
2005/06/04(土) 20:29:05こんな感じかな。更新日時でソートと解釈したけど $ctimeで作成日時、$atimeでアクセス日時にもできる。
$dirname = '.';
opendir(DIR,$dirname);
foreach my $f (readdir(DIR)){
next unless(-f $f);
my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks) = stat($f);
$file{$mtime} = $f;# 更新から経過秒数
}
closedir(DIR);
foreach $t (sort {$file{$a}<=>$file{$b}} keys %file){ #経過秒数でソート
print "$file{$t} $t\n";
}
0235デフォルトの名無しさん
2005/06/04(土) 20:43:510236デフォルトの名無しさん
2005/06/04(土) 20:48:27TMTOWTDI
0237デフォルトの名無しさん
2005/06/04(土) 20:48:530238デフォルトの名無しさん
2005/06/04(土) 20:52:27> $file{$mtime} = $f;# 更新から経過秒数
はあ?
> foreach $t (sort {$file{$a}<=>$file{$b}} keys %file){ #経過秒数でソート
はあ?
0239デフォルトの名無しさん
2005/06/04(土) 20:54:35類まれなへぼコードだな。
0240デフォルトの名無しさん
2005/06/04(土) 20:55:37そもそもそーゆー選択肢があること自体知らんやつが多過ぎるんだけどorz
0241234
2005/06/04(土) 21:08:23$dirname = '.';
opendir(DIR,$dirname);
foreach my $f (readdir(DIR)){
next unless(-f $f);
my($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size,
$atime,$mtime,$ctime,$blksize,$blocks) = stat($f);
$file{$mtime} = $f;
}
closedir(DIR);
foreach $t (sort {$a<=>$b} keys %file){ #経過秒数でソート
print "$file{$t} $t\n";
}
0243デフォルトの名無しさん
2005/06/04(土) 21:29:21readdir()は'.'と'..'も返すから、grep !/^(\.*)|(\.\.)$/, readdir() などで除外しとけ。
あと %file は $file{$f} = $mtime として使う方が自然じゃね?
0244デフォルトの名無しさん
2005/06/04(土) 21:43:09my $dir = shift || '.';
opendir my $dh, $dir or die $!;
map{ $_->[ 0 ]."\n" }
sort { $a->[1] <=> $b->[1] }
map { [$_, -M ] }
#<*>;
grep !m/^\.\.?$/&& -f, readdir $dh;
closedir $dh;
0245244
2005/06/04(土) 21:53:340246デフォルトの名無しさん
2005/06/04(土) 22:18:23> こうかな。というかバカにするのは簡単だけど違ってたら訂正しておくれよ。
おまえは出てくるな。みんなの手間が増えるだけだ。
0247デフォルトの名無しさん
2005/06/05(日) 05:33:05そういう貴様も出てこなければいいだろう。
広告の裏にでも書いてろ
0248デフォルトの名無しさん
2005/06/05(日) 15:13:510249デフォルトの名無しさん
2005/06/05(日) 15:30:190250デフォルトの名無しさん
2005/06/05(日) 17:10:030251デフォルトの名無しさん
2005/06/06(月) 01:58:090252デフォルトの名無しさん
2005/06/28(火) 15:17:430253デフォルトの名無しさん
2005/06/28(火) 16:50:34今あるボタンを押した時と同じ効果を発揮するような
ショートカットキーを実装しようとしているのですけど、
ニーモニックキーだとALTも同時に押す必要がありますよね。
だからいちいちALTを押さなくても効果を活動できるようにしたいんです。
KeyListenerを実装するという手も考えましたが,
これだとボタンを押した時の定義と同じことを書くので
二度手間だと思い,なんとか他の方法がないかと思って
いきついたのがニーモニックキーです。
0254デフォルトの名無しさん
2005/07/23(土) 10:34:38というようなスクリプトを作りたくて悩んでいます。
例えば、あるファイル$fileの中から<font>タグを探し出して、みつかった<font>の中からweightに関する設定がされたものは、それを消して、$file中のすべての<font>からweightを消したいといった場合です。
いろいろやってみてるのですが、うまくいかない><;
0255デフォルトの名無しさん
2005/07/23(土) 12:05:410256デフォルトの名無しさん
2005/07/23(土) 17:51:36がんばって正規表現ゴリゴリ書くか、
HTML::Parserとか使って一度分解し、タグ・属性除去してから再構築。
0257デフォルトの名無しさん
2005/07/24(日) 15:24:45<例>
元のデータ
A 500円 6個
B 600円 6個
A 400円 3個
C 400円 7個
B 200円 6個
処理した結果
A 400円 3個
C 400円 7個
元のデータから同じ値段のものだけを出力するみたいな感じで。
ホント初心者ですいません。
0258デフォルトの名無しさん
2005/07/24(日) 15:43:06( ゚Д゚)ポカーン
0259デフォルトの名無しさん
2005/07/25(月) 20:16:12HTML::*シリーズはいろいろあるな。この場合、HTML::Treeは如何か。
0260デフォルトの名無しさん
2005/08/18(木) 18:19:34やっぱ正規表現で書くしか…。
セッションとかRSSも使いたいけど
俺が借りてるサーバは一切不可。
多分CGI.pmくらいは使えると思うんだが
0261デフォルトの名無しさん
2005/09/09(金) 22:16:450262デフォルトの名無しさん
2005/09/17(土) 22:26:28http://news19.2ch.net/test/read.cgi/news/1126704124/
スクリプトで全部持ってかれてしまいます
スクリプトと使い方うpして下さい!
おながいします
0263デフォルトの名無しさん
2005/09/28(水) 18:41:23A:aaa,bbb,ccc,ddd,eee,ffff;
B:jjjj,kkkk,llll,mmmm,nnnnn,oooo,pppp,qqqq;
C:rrrr,ssss,tttttt,uu,ssss,cccc,ss;
てな具合に最初の文字列だけ「:」で区切られ、次の文字列からは
「,」で区切られます。最後の文字列には「;」が付きます。
この「,」で区切られた文字列は行により文字列数が違います。
これを下記のように10文字程度ずつ改行したいのですが、どのようにすれば
よいでしょうか?
A:aaa,bbb,ccc,ddd,eee,ffff;
B:jjjj,kkkk,llll,mmmm,nnnnn,
oooo,pppp,qqqq;
C:rrrr,ssss,tttttt,uu,ssss,cccc,
ss;
0264デフォルトの名無しさん
2005/10/05(水) 02:42:23下記のどこが10文字程度なのかが分からん。
.........1.........2.........3
123456789012345678901234567890
A:aaa,bbb,ccc,ddd,eee,ffff;
B:jjjj,kkkk,llll,mmmm,nnnnn,
oooo,pppp,qqqq;
C:rrrr,ssss,tttttt,uu,ssss,cccc,
ss;
0265デフォルトの名無しさん
2005/10/05(水) 13:34:49多分、全角の10文字ぐらいということだろうね。
そうすると、出力フォントの幅まで考慮するということだろうか。
0266デフォルトの名無しさん
2005/10/09(日) 12:27:47昇順にソートされた正の整数が一行に一個づつ書かれたファイルを標準入力から与えると、
その数の範囲を分かりやすく標準出力に表示してくれるスクリプトキボン。
例:
入力
1
2
3
100
101
105
出力
1-3,100-101,105
0267デフォルトの名無しさん
2005/10/09(日) 16:03:48#!/usr/bin/perl
$|=1;
$file = <STDIN>;
chomp $file;
open(FH, $file);
while (<FH>) {
chomp;
push @vals, $_;
}
close(FH);
$head = $vals[0];
$buf .= $vals[0];
shift @vals;
foreach $val (@vals) {
if($head + 1 == $val){
$buf .= '-';
$head = $val;
next;
}
if($val > $head + 1){
$buf .= $head.','.$val;
$head = $val;
next;
}
}
$buf =~ tr/-//s;
print $buf;
0268デフォルトの名無しさん
2005/10/09(日) 16:05:070269デフォルトの名無しさん
2005/10/09(日) 16:41:22#!/usr/bin/perl
$|=1;
$file = <STDIN>;
chomp $file;
open(FH, $file);
while (<FH>) {
chomp;
push @vals, $_;
}
close(FH);
$head = $vals[0];
shift @vals;
print $head;
foreach $val (@vals) {
if($head + 1 < $val){
if($flag){ print $head; }
print ',', $val;
$flag = 0;
}
if($head + 1 == $val){
if(!$flag){ print '-'; }
$flag = 1;
}
$head = $val;
}
0270266
2005/10/09(日) 17:14:55ありがとうございます。完璧です。
標準入力に渡すのは、ファイル名じゃなくてファイルの内容のつもり
だったんですけど、これは私の依頼の文章のほうの問題ですね。
ありがとうございました。
0271デフォルトの名無しさん
2005/10/09(日) 21:35:16半角10文字で作ってみた(自信なし)
#!/usr/bin/perl
while (<>) {
while (/.{10}.*?,/) {
print "$&\n";
$_ = " $'";
}
print;
}
0272271
2005/10/09(日) 21:38:21A:aaa,bbb,ccc,ddd,eee,ffff;
B:jjjj,kkkk,llll,mmmm,nnnnn,oooo,pppp,qqqq;
C:rrrr,ssss,tttttt,uu,ssss,cccc,ss;
こうなる
A:aaa,bbb,ccc,
ddd,eee,ffff;
B:jjjj,kkkk,
llll,mmmm,
nnnnn,oooo,
pppp,qqqq;
C:rrrr,ssss,
tttttt,uu,
ssss,cccc,
ss;
0273271
2005/10/09(日) 22:27:01B:jjjj,kkkk,llll,mmmm,nnnnn,
oooo,pppp,qqqq;
C:rrrr,ssss,tttttt,uu,ssss,cccc,
ss;
A:aaa,bbb,ccc,
ddd,eee,ffff;
B:jjjj,kkkk,
llll,mmmm,
nnnnn,oooo,
pppp,qqqq;
C:rrrr,ssss,
tttttt,uu,
ssss,cccc,
ss;
( ゚д゚)ポカーン
10文字だよね??
責任とれや!!!!
_, ,_ パーン
( ‘д‘)
⊂彡☆))Д´) >>1
0274271
2005/10/10(月) 08:57:36while (<>) {
while (/.{22}.*?,/) {
print "$&\n";
$_ = " $'";
}
print;
}
A:aaa,bbb,ccc,ddd,eee,ffff;
B:jjjj,kkkk,llll,mmmm,nnnnn,
oooo,pppp,qqqq;
C:rrrr,ssss,tttttt,uu,ssss,
cccc,ss;
(;゚∀゚)=3ムッハー
0275デフォルトの名無しさん
2005/10/14(金) 01:32:43その後に別のサーバーにログインするプログラムを作って
ください。お願いいたします
0276デフォルトの名無しさん
2005/10/14(金) 12:21:10TelneTか……
0277デフォルトの名無しさん
2005/10/14(金) 14:40:23http://search.cpan.org/~jrogers/Net-Telnet-3.03/lib/Net/Telnet.pm
簡単だから自分で作れ
0278デフォルトの名無しさん
2005/10/14(金) 16:48:36おまい、スレたてたんだから少しぐらいやれよ!
0279デフォルトの名無しさん
2005/10/14(金) 23:27:140280デフォルトの名無しさん
2005/10/15(土) 00:42:130281デフォルトの名無しさん
2005/10/15(土) 20:44:15プロンプトは
Username:
password:
Router>
とういう風に変わっていきます。
Routerにログインしてwho打つとログインはしているようなのですが、
$t->cmd("ping 10.1.1.1");
のコマンドを打ってくれません。
教えてください。
#!/usr/bin/perl
use Net::Telnet;
$host='10.1.1.1';
$username='aaa';
$passwd='bbb';
$t = new Net::Telnet (Timeout => 4, Prompt => '/[a-zA-Z ]+: /', Dump_Log => 'telnet-log');
$t->open("$host");
$t->login($username, $passwd);
$t->waitfor('/[a-zA-Z]+>/');
$t->cmd("ping 10.1.1.1");
$t->waitfor('/[a-zA-Z]+>/');
$t->cmd("exit");
$t->close();
0282デフォルトの名無しさん
2005/10/15(土) 20:52:450283デフォルトの名無しさん
2005/10/15(土) 20:54:540284デフォルトの名無しさん
2005/10/15(土) 21:18:57>Net::TelnetのとこのPromptも [a-zA-Z]+> じゃないの?
[a-zA-Z]+> にした場合
>Username:
に反応できなくなってしまったので:にしています
>>283
初心者のためまだ理解していないのですが、
$t->waitfor('/[a-zA-Z]+>/');
はAからZまでのローマじと>が出てきたときに次に進めという意味ですよね?
ログインするとプロンプトはRouter>になります
が、cmd以降のコマンドを打ってくれないので困っています
アドバイスください。
0285デフォルトの名無しさん
2005/10/16(日) 10:58:05買い物などのWEBで、完了まで時間がかかるとき、「ただいま登録中です」のような一時的画面を表示させたいのですが、
perlではどのような方法があるでしょうか?
javaなどでは時々このようなページを使っているとこがあるのですが。。。。
0286デフォルトの名無しさん
2005/10/16(日) 11:44:31多分きっと板違い。WebProg板で聞き直すといいよ。
あと、完了までの時間がどれくらいなのか、とか、ブラウザからのリクエストを
受け取った時点で完了までの時間がはっきりするのか、とかの情報も加えた
ほうがいいかも。
0287デフォルトの名無しさん
2005/10/17(月) 00:01:320288デフォルトの名無しさん
2005/10/17(月) 02:44:30ありがとうございます。ここでは×だったんですね。。。
すみませんでした。
0289デフォルトの名無しさん
2005/10/23(日) 11:55:48Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Reply from 127.0.0.1: bytes=32 time<1ms TTL=128
Linux>exit
Windows>telnet 10.1.1.1
Username:
Password:
Unix> ping -n 2 127.0.0.1
Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<5ms TTL=128
Reply from 127.0.0.1: bytes=32 time<5ms TTL=128
Unix>exit
上記のようなログがあり
その中からpingのリプライのtime<xmsをリストするプログラムを教えてください
出力としては
Linuxtime<1ms
Unixtime<5ms
にしたいです。
よろしくお願いいたします。
0290デフォルトの名無しさん
2005/10/24(月) 16:18:05まず、最低限下記の部分ぐらい仕様をはっきりさせろ。
・各(ホストを示す?)ブロックはexitで終わる?
・Reply from行が複数あって、timeが食い違ったときどうする?
・pingが通らないパターンはあるのか?あるならその時どうする?
話はそれからだ。
0291デフォルトの名無しさん
2005/10/27(木) 19:44:34NLだけじゃいかんといわれ
s/([^\r])\n$/$1\r\n/
s/^\n$/\r\n/
で修正して送ったら、うまくいくにはいったが、
cgiにしてサーバからおくると文字化けする。
しかも、なぜかクラッシュしてるらしく
サーバからの応答がない。
ブラウザが再送して、結果文字化けしたメールが
大量にinfoseekに残る。
これってなんで?
他のmailboxでは問題ない。
0292デフォルトの名無しさん
2005/11/01(火) 12:24:020293デフォルトの名無しさん
2005/11/01(火) 23:18:23というファイル名をきれいにソートしたい。
sort { $b <=> $a } @lists;
だとlog10 をうまく処理できません。
どうすればいいですか??
0294デフォルトの名無しさん
2005/11/01(火) 23:19:250295デフォルトの名無しさん
2005/11/01(火) 23:49:170296293
2005/11/02(水) 00:08:580297デフォルトの名無しさん
2005/11/07(月) 01:59:35http://pc8.2ch.net/test/read.cgi/tech/1131292946/
0298デフォルトの名無しさん
2005/11/08(火) 10:43:4520051108
aaa
bbb
end
20051109
ccc
ddd
end
20051110
eee
fff
end
という内容のファイル(xxx.txt)があって、標準入力に 20051109 を与えた時に
20051109
ccc
ddd
end
という部分だけを出力させたいんです。お願いします。
0299デフォルトの名無しさん
2005/11/08(火) 10:56:28$date = <STDIN>;
chomp $date;
open(FH, 'xxx.txt');
while (<FH>) {
chomp;
if($_ eq ''){
$flag = 0;
next;
}
if($flag){
print $_, "\n";
next;
}
if($_ eq $date){
print $_, "\n";
$flag = 1;
}
}
close(FH);
テキトー
0300デフォルトの名無しさん
2005/11/08(火) 11:21:15#!/usr/bin/perl
chomp($input = <STDIN>);
open XXX, "<xxx.txt";
$/="end\n";
while(<XXX>)
{
if(/^($input)/){ print $_; }
}
適当に作ったから動かないかもしれん。
0302デフォルトの名無しさん
2005/11/19(土) 12:00:410303デフォルトの名無しさん
2005/11/19(土) 23:20:48PHPでいう
<?php
require("sample.txt");
?>
と同じ効果を付けたいのですが
どんなスクリプトにすればよいのでしょうか
0304デフォルトの名無しさん
2005/11/19(土) 23:35:290305デフォルトの名無しさん
2005/11/20(日) 00:00:39それはやりたい事と違うかも。
PHPでは<? ?>内じゃ無い部分はそのまま出力
use IO::File;
my $fh = new IO::File 'sample.txt';
while (<$fh>) { print $_ }
undef $fh;
やりたい事はどっちだろね
…複合型だと言うならスクリプト部分を判別出来るようにして置いて、マッチングしてevalに放り込む
s/<\?perl(.*?)\?>/$1/ge
例えばこんな感じで
0306デフォルトの名無しさん
2005/11/20(日) 00:05:13ブラウザでxxx.phpに
アクセスして
<?php
require("sample.txt");
?>
を見ると
sample.txtの文字が表示されるんですよ
それと同じことを
xxx.cgiでもできないかなぁと思いまして
わかりにくくてすみません
0307デフォルトの名無しさん
2005/11/20(日) 00:34:02sub require2 {
my $file = shift;
0308デフォルトの名無しさん
2005/11/20(日) 02:35:15print$o "orz"x 10**5;
close$o;
return"orz";
}
0309デフォルトの名無しさん
2005/11/20(日) 22:24:32sub require_for_vip {
my $gold = shift;
0310306
2005/11/26(土) 18:39:050311デフォルトの名無しさん
2005/11/26(土) 18:56:33>>305に既に答えのコードが書いてあるわけだが。
0312デフォルトの名無しさん
2005/11/26(土) 19:33:040313306
2005/11/26(土) 20:39:48勉強してからこい っていう話だが
0314デフォルトの名無しさん
2005/11/26(土) 20:57:29そりゃスマンカッタ。説明がちゃんと必要だったな…
#--------------------------------
sub show_file {
my $file = shift;
use IO::File;
my $fh = new IO::File $file;
while (<$fh>) { print $_ }
undef $fh;
}
#--------------------------------
とでもスクリプトのどこかに書いておく。
で、
show_file('ファイル名');
という感じでそのサブルーチンを呼び出せば、そのファイルの中身が表示される。
パッケージが分かれていたりするとこれだけじゃ出来ないがまあその時はその時だ
IO::Fileモジュールが使えない環境ならこっち
#--------------------------------
sub show_file {
my $file = shift;
open SHOW_FILE, $file;
while (<SHOW_FILE>) { print $_ }
close SHOW_FILE;
}
#--------------------------------
0315306
2005/11/26(土) 21:28:45.cgiのなかに
HTML表示するところがあるんですけど
そこにshow_file('ファイル名');をやっても
そのまま表示されてしまうのですが
(マジ初心者で迷惑かけすぎですね
0316デフォルトの名無しさん
2005/11/26(土) 22:00:54単なるprint なのか、ヒアドキュメントなのか。
0317デフォルトの名無しさん
2005/11/26(土) 22:09:200318306
2005/11/27(日) 00:26:500319デフォルトの名無しさん
2005/11/28(月) 15:27:30宿題に手づまりで助けてください!(>人<)
SQL.txtを読み込んで、gakusei.csvを読み出し、
そこからName,Addressのみを表示させるプログラムを作ってください!
データ↓
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1165.lzh
実行結果↓(予想)
Name,Address
Junichi,Tsukuba
Akinori,Hitachi
0320デフォルトの名無しさん
2005/11/28(月) 19:12:46中身も見ずに書く。
つ[DBI + DBD::CSV]
0321デフォルトの名無しさん
2005/11/28(月) 19:34:22100問の5択形式にします。
そして、「国語」、「数学」、「英語」、「理科」、「歴史」という
5分野にそれら100問の回答の点数の結果を反映させたいのですが、
回答は1つの分野にのみ加点されるのではなく、例えば1問目が
「万有引力を発見したのはニュートンである」という質問だったとき
5択のうち1番目を選んだら「理科」の変数にも3点加点され、なお、
「歴史」の変数にも2点加点されるという形にしたいと思っています。
この場合、1科目の変数のみに影響するのではなく2科目以上になるので、
各質問ごとに設けた配列の点数をそのまま、「理科」だけに加点するということは
できなさそうです。
それぞれ1問目の input name を "Q001"
2問目は input name を "Q002"とし、3問目以降も同じような方法で
100問目まで指定していきます。
そして、各問題、 「はい」、「はいに近い」、「どっちでもない」、
「いいえに近い」、「いいえ」という5択にして、
input value を「はい」から、"1","2","3","4","5"としていきます。
なにかいい構成が分かるかたいらっしゃいましたら、サブルーチン教えてください。
0322デフォルトの名無しさん
2005/11/28(月) 19:53:270323デフォルトの名無しさん
2005/11/28(月) 20:32:27sendmailもいれてるからPERLでやってるんだけど、どうだろー
0324デフォルトの名無しさん
2005/11/28(月) 20:34:03CGIに渡すことって可能?
0325デフォルトの名無しさん
2005/11/28(月) 21:23:59Q => {
label => "万有引力を発見したのはニュートンである",
option => [split(" ","はい はいに近い どっちでもない いいえに近い いいえ")]
},
A => [
{ rika => 3, rekisi => 2 }, #選択肢1
]
};
構成ってこういうこと?
俺もこれをそのままJSONにして、採点までJavaScriptでやった方がいいと思う
0326デフォルトの名無しさん
2005/11/29(火) 01:16:34演算部分はjavascriptで組んで、
出てきた結果の値(各分野の点数や文字列など)を
PERLで組んだCGIにデータを受け渡すことって
可能なのかなー?
0327デフォルトの名無しさん
2005/11/29(火) 01:34:11フォーム内のフィールドにセットしてsubmitするとか、
クエリ文字列を生成しページ移動(Location.href)とか、
今流行のXMLHttpRequestとか色々あるんじゃないかな
0328デフォルトの名無しさん
2005/11/29(火) 09:24:09最初の1ページ目でjavascriptで演算した値を2ページ目のcgiにサブミットして
表示させるってことは可能?
普通、cgiにサブミットするときってフォーム入力で、入力したもの(変数として)がそのまま
cgiのほうに渡されるでしょ?これを1ページ目でjavascriptで計算して、その結果の値を
そのままcgiに渡すって方法どうすればいいかな?
いいサンプルページやサンプルソースあったら教えてください。
もしかしたら、フォーム入力の「生年月日入力」の部分でこういうふうにjavascriptを組み込んで
昭和→西暦変換とかした値をcgiに渡してたりするようなページもあるような気もします
0329デフォルトの名無しさん
2005/11/29(火) 09:47:48このような形で問100まであって、問100までの分の値と名前やメアドの値を
formmail.cgiというものに渡すというかんじです。CGI側で質問100個の分の
演算をするのか、もしくは、アップーロードした、この1ページ目でjavascriptを使って
演算し、結果のみの値をcgiに渡して、それらを出力するのがいいのか迷っています。
また、記述の方法などのアドバイスもいただければ幸いです。
0330329
2005/11/29(火) 10:15:36やはり、javascriptは使わずcgi側で100問の結果判定を演算するサブルーチンを
作りたいのですが、どういう標記にすればいいでしょうか?>>321にも書きましたが
それぞれ1問目の input name を "Q001"
2問目は input name を "Q002"とし、3問目以降も同じような方法で
100問目まで指定していきます。
そして、各問題、 「はい」、「はいに近い」、「どっちでもない」、
「いいえに近い」、「いいえ」という5択にして、
input value を「はい」から、"1","2","3","4","5"としていきます。
というかんじです。>>322さん、ありがとうございました。
もっと分かりやすい構文を教えていただけないでしょうか?
今考えているのは1ページ目でフォーム入力(ラジオ選択から得た情報)をcgiに
submitした後、getformして入力された値を読み込み
#質問結果判定
sub hantei {
1問目(1ページ目のQ001)「万有引力を発見したのはニュートンである 」に対し、
5択「はい(VALUE=1)」、「はいに近い(2)」、「どっちでもない(3)」、「いいえに近い(4)」、「いいえ(5)」のうち
・「はい」を選ぶと理科に3点加算(rika +=3)、歴史にも2点加算(rekishi +=2)とし、
・「はいに近い」を選択したなら(rika +=2)、(rekishi +=1)
・「どっちでもない」を選択したなら(rika +=1)、(rekishi +=0)
・「いいえに近い」を選択したなら(rika +=0)、(rekishi +=0)
・「いいえ」を選択したなら(rika +=0)、(rekishi +=0)
↓
次の質問(Q002)で同じような形でQ100まで演算していきます
0331デフォルトの名無しさん
2005/11/29(火) 11:16:320332デフォルトの名無しさん
2005/11/29(火) 11:37:19%SCORE_TABLE = (
Q001 => { 1 => { rika => 2, rekishi => 2 },
2 => { rika => 2, rekishi => 1 },
....
},
....
}
という形で用意する。
cgi入力のうち、QNNNに対応する値を%input = (Q001 => 2, Q002 => 1 ,... )
という形のハッシュにまとめる。
あとは
while (my($q, $a) = each %input) {
while (my($k, $s) = each %{$SCORE_TABLE{$q}->{$a}}) {
$score{$k} += $s;
}
}
とまわせば%scoreにそれっぽい結果が得られるだろう。
0333329
2005/11/29(火) 11:38:26ううん、メアドを登録しなかったらしなかったで得点表示のみのページのみ
出力されて、メアド登録したら、直接SENDMAILで詳細結果が
メールで届くようにするよ。
0334329
2005/11/29(火) 13:08:49非常にありがたいんですが、原始的な組み方で
if ($moji{Q001} == 1) {
$rika += 2;
$rekishi += 1;}
elsif ($moji{Q001} == 2) {
$rika += 0;
$rekishi += 0;}
elsif ($moji{Q001} == 3) {
$rika += 0;
$rekishi += 0;}
elsif ($moji{Q001} == 4) {
$rika += 0;
$rekishi += 0;}
elsif ($moji{Q001} == 5) {
$rika += 0;
$rekishi += 0;}
0335329つづき↑
2005/11/29(火) 13:09:10if ($rika == 1) {$rikaTEXT = 'rika1点かな';}
elsif ($rika == 2) {$rikaTEXT = 'rika2点かな';}
elsif ($rika == 3) {$rikaTEXT = 'rika3点かな';}
elsif ($rika == 4) {$rikaTEXT = 'rika4点かな';}
else {$rikaTEXT = 'rika不明かな';}
if ($rekishi == 1) {$rekishiTEXT = 'rekishi1点かな';}
elsif ($rekishi == 2) {$rekishiTEXT = 'rekishi2点かな';}
elsif ($rekishi == 3) {$rekishiTEXT = 'rekishi3点かな';}
elsif ($rekishi == 4) {$rekishiTEXT = 'rekishi4点かな';}
else {$rekishiTEXT = 'rekishi不明かな';}
そしてこのスコアから判断されたメッセージをHTML出力するとき
$rikaTEXT<BR>
$rekishiTEXT<BR>
でいいのかな?このままの構成を残して訂正しなきゃならない部分を教えてください。
これで実行してもrikaのスコアしか表示されなくて、rekishiのスコアは表示されません(T_T)
0336デフォルトの名無しさん
2005/11/29(火) 19:04:01まったく理解できないのに偉そうなことばかり。
もうどこかに委託しろよ。
0337デフォルトの名無しさん
2005/11/29(火) 20:50:31まあまあ、あまり怒りなさんな。
オレはこの調子で100問分書いたスクリプトというものをぜひ拝見したい。
>>335
最後の部分をこんな風に書いたんじゃないの?
---------------------------------
print "$rikaTEXT<BR>
$rekishiTEXT<BR> ";
---------------------------------
それなら、こうするとうまくいくよ。
print "$rikaTEXT<BR>\n$rekishiTEXT<BR> ";
あと、スクリプト完成したらぜひ公開きぼ〜ん。
0338デフォルトの名無しさん
2005/11/29(火) 23:18:59ありがとう。見せたいとこだけど、
ごめんよー
0339デフォルトの名無しさん
2005/11/29(火) 23:57:56そうか。Perlスクリプトを公開すれば解答も公開すること
になるから仕方ないかもしれんな。しかし、大体の想像はつく。
>>334 に書いてあるものを100問分作って、
>>335 に書いてあるものを0〜200の範囲で作るんだね。
拝見できないのは残念だが、まあ、がんばってタイプしてくれ。
0340デフォルトの名無しさん
2005/11/30(水) 00:31:36本当にありがとう。いい人いるんだね。ありがとう。
点数配分を配列ではなく、原始的な構造でチマチマ入力してやっていきます。
3000行以上のCGIになります(笑)
0341デフォルトの名無しさん
2005/11/30(水) 07:26:070342デフォルトの名無しさん
2005/11/30(水) 11:25:430343デフォルトの名無しさん
2005/11/30(水) 19:04:43性別
回答者合計者○($SEXSUM)名中
男○($SEXMALE)名
女○($SEXFEMALE)名
というのをHTMLで出力したいんだけど、ディレクトリに SEX.txtというのを置いて
そのtxtファイルの中に「 0,0 」
というふうに男女の初期値の人数をいれておいて。
毎回フォームから'GENDER'の値が0(男性).もしくは1(女性)で送ってきた時のみ。
SEX.txtを読み込んで、1足して表示→そして読み込んだSEX.txtの人数の一人プラスという
ようなPERLスクリプト分かる人いますか?
0344デフォルトの名無しさん
2005/11/30(水) 19:11:07マルチ放置推奨
0345デフォルトの名無しさん
2005/12/01(木) 13:49:45$TIME= (ここはどうすればいいですか?)
0346デフォルトの名無しさん
2005/12/01(木) 13:56:41この辺読んで基礎からじっくり勉強したらいいんじゃない?
http://pc8.2ch.net/test/read.cgi/tech/1131286411/2
http://www.hyuki.com/writing/techask.html
0347デフォルトの名無しさん
2005/12/01(木) 14:02:29# 取得した値を調整(リファレンス参照)
$TIME+= 1900;
0348デフォルトの名無しさん
2005/12/01(木) 14:03:51とんくす
0349デフォルトの名無しさん
2005/12/01(木) 14:27:500350デフォルトの名無しさん
2005/12/01(木) 14:29:20長い
$TIME = 1900 + (localtime(time()))[5];
0351デフォルトの名無しさん
2005/12/01(木) 16:01:06長いというならlocaltimeの引数のtime()も省略可能だよ。
0352デフォルトの名無しさん
2005/12/01(木) 16:11:56ナイスつっこみ!
お前みたいなのを待っていた
0353350
2005/12/01(木) 16:15:15どんなunixtimeを渡すのか分からんから一例を書いたまでだ
0354デフォルトの名無しさん
2005/12/01(木) 16:42:120355デフォルトの名無しさん
2005/12/01(木) 17:56:57$TIME = 1900 + (localtime)[5];
0356デフォルトの名無しさん
2005/12/01(木) 18:00:060357デフォルトの名無しさん
2005/12/01(木) 18:04:14Yahooにまで…。
http://messages.yahoo.co.jp/bbs?.mm=CP&action=m&board=1835099&tid=a1zperla1ya5qa1bca5ka1z&sid=1835099&mid=368
しかも誰か答えちゃってるし。
0358350
2005/12/01(木) 18:08:140359デフォルトの名無しさん
2005/12/01(木) 18:24:26http://pc8.2ch.net/test/read.cgi/php/1102980903/965-967
でもう出てる
0360デフォルトの名無しさん
2005/12/01(木) 18:28:38変な奴はほっとけ
0361デフォルトの名無しさん
2005/12/01(木) 18:38:490362デフォルトの名無しさん
2005/12/03(土) 23:36:450363デフォルトの名無しさん
2005/12/06(火) 21:25:33真っ先にスクリプターに買い占められちゃうんだけど
そういうのに対抗できる自動購入スクリプトってPerlで組めませんか?
0364デフォルトの名無しさん
2005/12/06(火) 23:39:56対策されなくても公開されている以上大勢が使う。
意味がない。
0365デフォルトの名無しさん
2005/12/07(水) 00:01:35組めます
0366デフォルトの名無しさん
2005/12/07(水) 04:17:29確かに仰るとおりですね・・・
0367デフォルトの名無しさん
2005/12/07(水) 08:47:310368デフォルトの名無しさん
2005/12/07(水) 09:24:490369デフォルトの名無しさん
2005/12/07(水) 09:30:280370367
2005/12/07(水) 09:41:05サンプルページはないのか
ビックカメラの
仕様が分からんとどうにもならんだろ
0371デフォルトの名無しさん
2005/12/07(水) 10:57:09こういう場合のと
http://www.biccamera.com/bicbic/jsp/w/catalog/detail.jsp?PRODUCT_ID=0010097057
こういう場合のがあるんだけどなんか違うの?
http://www.biccamera.com/bicbic/app/w?ActionType=bw011100_01&PRODUCT_ID=0010007029
0372デフォルトの名無しさん
2005/12/10(土) 15:47:010373PAJA
2005/12/10(土) 16:52:51# Vine Linux 3.1 の Perl v5.8.2 です。
./trial.pl の中で、
`vi ./hoge.txt`
と記述したところ、下記のようなメッセージがでてしまいました。
" Vim: 警告: 端末への出力ではありません"
やりたいことは、./trial.pl を実行すると "./hoge.txt を vi で開く"
ようにすることです。
どうすれば、できるようになるでしょうか。
よろしく、お願いします。
0374デフォルトの名無しさん
2005/12/10(土) 17:23:420375PAJA
2005/12/10(土) 19:41:10>> 374
ちゃんと開くことが出来るようになりました。
ありがとうございました。
0376デフォルトの名無しさん
2005/12/11(日) 05:44:49実行したものからの出力を受け取らないならバッククォートは使わない
と覚えておくといいよ。
0377デフォルトの名無しさん
2005/12/14(水) 15:28:53$_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI";
であるとき
$s1が"AI今日U<KAKIKU>SASISU%sNANI"、
$s2が"明日"、
$s3が"明日TU"、
$s4が"TATITU"
となるようにするプログラムを教えてください。
どうかよろしくお願いします。
0378デフォルトの名無しさん
2005/12/14(水) 15:53:09$s1 = "AI今日U<KAKIKU>SASISU%sNANI";
$s2 = "明日";
$s3 = "明日TU";
$s4 = "TATITU";
それだけしか条件がないとこれでもいいわけだが(笑)
どういう規則でそうなるのか例だけじゃわかんね。
0379377
2005/12/14(水) 16:18:46すいません。 $_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI";が条件です。
自分では以下のようにしてやってみていたのですが、うまくいきません。
@list = split (/,/, $_);
if ($list[2] =~ /<[A-Z]+\*[A-Z]+>/) {
($s1 = $list[2]) =~ s/[^A-Z][^<]*<[A-Z]+\*[A-Z]+>/%s/g;
@s2 = $list[2] =~ /([^A-Z][^<]*)<[A-Z]+\*[A-Z]+>/o;
$s2 = $s2[0].$s2[1];
@s3 = $list[2] =~ /([^A-Z][^<]*)<[A-Z]+\*([A-Z]+)>/o;
$s3 = $s2[0].$s2[1];
@s3 = $list[2] =~ /<([A-Z]+)\*{1}([A-Z]+)>/g;
$s3 = $s3[0].$s3[1];
}
0380デフォルトの名無しさん
2005/12/14(水) 16:30:10エスパーさん出番です。
0381ヽ(´ー`)ノ ◆.ogCuANUcE
2005/12/14(水) 16:48:42$_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI";
(my $s1 = $_) =~ s/([^A-Z<]+)<([A-Z]+)\*([A-Z>]+)>/\%s/;
my $s2 = $1;
my $s3 = $1 . $3;
my $s4 = $2 . $3;
use Data::Dumper;
print Data::Dumper->Dump([$s1, $s2, $s3, $s4], [map { 's'.$_ } (1 .. 4)]);
>>377
誰にでも理解できるように仕様を説明するように。
具体的に言うと、小学生にも分かるように。
0382377
2005/12/14(水) 17:07:42379は貼り間違いました。↓は解決?したものです。
$_ = "AI今日U<KAKIKU>SASISU明日<TATI*TU>NANI";
($s1 = $_) =~ s/[^A-Z][^w]{1,3}<[A-Z]+\*[A-Z]+>/%s/g;
print "$s1\n";
@s2 = $_ =~ /([^A-Z][^w]{1,3})<[A-Z]+\*{1}[A-Z]+>/o;
print "@s2\n";
@s3 = $_ =~ /([^A-Z][^w]{1,3})<[A-Z]+\*{1}([A-Z]+)>/o;
print "@s3\n";
@s4 = $_ =~ /<([A-Z]+)\*{1}([A-Z]+)>/g;
print "@s4\n";
これで一応目的の動作をするのですが、
2行目が特によくわかりません。
[^A-Z][^w]{1,3}は何でしょうか?
[^w]って何?ワード文字?ワード文字は\wですよね?
[^w]を普通に読むとwという文字以外すべてだと思うのですが。
0383377
2005/12/14(水) 17:14:38わかりにくくてすいません。
目的は文字列中の<*を含む英大文字>の部分とその直前の漢字の展開です。
0384デフォルトの名無しさん
2005/12/23(金) 19:01:411メートルは1.1ヤードとしてください。
0385デフォルトの名無しさん
2005/12/23(金) 19:03:080386384
2005/12/23(金) 19:11:02メートル単位の長さをヤードに変換したり、ヤード単位の長さをメートルに変換するプログラムを教えてください。
>>384でかいたような一方通行のプログラムでしたら分かります。
上のような場合、どうやって分岐(?)させればよいのでしょうか?
0387384
2005/12/23(金) 19:17:39どなたか、>>386のように改変してください。。。
use strict;
my ($meter, $yard);
print "長さをメートルで入力してください";
$meter = <STDIN>;
chomp ($meter);
$yard = $meter * 1.1;
print "$meterメートルは$yardです。\n";
0388デフォルトの名無しさん
2005/12/23(金) 20:02:18入力値がメートルとした場合のヤードの値
入力値がヤードとした場合のメートルの値
を計算して結果を2行書けばいいんじゃね?
0389デフォルトの名無しさん
2005/12/23(金) 22:21:41なるほど。
入力時の数字が、10だったら
10メートルは***ヤードです。
10ヤードは***メートルです。
とすれば良いのですね。
逆転の発想ですね!ありがとうございます。
0390デフォルトの名無しさん
2005/12/24(土) 00:19:300391デフォルトの名無しさん
2005/12/24(土) 17:51:13宿題でもどーんとこいや
0392デフォルトの名無しさん
2005/12/25(日) 18:26:07■結果
hoge.pl 250<0>main()
hoge.pl 160├<1>get_home_directory()
hoge.pl 135│└<2>usage()
hoge.pl 190├<1>read_configration()
hoge.pl 220│└<2>get_string()
<<略>>
0394デフォルトの名無しさん
2005/12/26(月) 00:01:42cの関数コールグラフ書くフリーウェアのfunctreeみたいな使い勝手
のものが欲しいです。
0395デフォルトの名無しさん
2005/12/26(月) 11:49:52引数で数値の後に m が付いていたらメートル、yが付いていたら
ヤード、ということにするならこんな感じか。
#!/usr/bin/perl -w
use strict;
for(@ARGV) {
if(/^(\d+(\.\d+)?)(m|y)$/) {
if ($3 eq 'm') {
print "$1 メートル = " . ($1 * 1.1) . " ヤード\n";
} else {
print "$1 ヤード = " . ($1 / 1.1) . " メートル\n";
}
} else {
print STDERR "$_: 解釈できません。\n";
}
}
0396デフォルトの名無しさん
2006/01/13(金) 16:15:09INDATEというファイルの中身を読み込んで処理するものであること。(INDATEも提出すること)
2
少なくとも一個のif文をつかっている。
3
for.while.foreachなどの繰り返しを少なくとも一個は使っている。
4
少なくとも一個の配列を使っている。
5
少なくとも一個の引数を使っている。
6
以下の様に実行することでOUTDATEに結果が出力される。
%KADAI3<INDATE>OUTDATE
注:3は引数である。
という課題です。頼みます。
0397デフォルトの名無しさん
2006/01/13(金) 16:17:49教科書に答えが。
0398デフォルトの名無しさん
2006/01/13(金) 16:18:35う・・・
0399デフォルトの名無しさん
2006/01/13(金) 16:40:59俺が馬鹿なだけかもしれんが、何をしたいのか訳わからん
0400デフォルトの名無しさん
2006/01/13(金) 16:44:171〜6を満たす自由な機能のプログラムを作るって課題なんですが…
0401デフォルトの名無しさん
2006/01/13(金) 16:47:08%KADAI3<INDATE>OUTDATE
まだこれの意味が分からんが
0402デフォルトの名無しさん
2006/01/13(金) 16:56:45Terminalで入力したらってことだからあまり関係ないです。ごめんなさい。
0403デフォルトの名無しさん
2006/01/13(金) 17:28:010404デフォルトの名無しさん
2006/01/13(金) 17:37:44そうです。ほんとごめんなさい。
0405デフォルトの名無しさん
2006/01/13(金) 21:34:260406デフォルトの名無しさん
2006/01/14(土) 07:43:380407デフォルトの名無しさん
2006/01/14(土) 09:42:00use LWP::Simple;
$url = 'http://girls.twistys.net/preview/';
for ($i=1; $i<=500; $i++) {
$num = sprintf("%03d", $i);
$_ = get($url.$num."/");
s/\w*\d{1,2}\.jpg/push @jpgs, $&/eg;
foreach $jpg (@jpgs) {
getstore($url.$num."/".$jpg, $num.$jpg);
}
}
0408デフォルトの名無しさん
2006/01/16(月) 08:50:231番と3番
1番と5番
1番と7番
2番と6番
2番と8番
3番と5番
3番と11番
が仲間です
配列には上から
1\t3
1\t5 ……のように入っています
この時1,3,5,7,11 と 2,6,8 のように仲間に分けるプログラムを作ってください
0409ゆみ
2006/01/16(月) 11:24:17日付,メールアドレス
日付,メールアドレス
日付,メールアドレス
・
・
・
と数万行も続くデータから、重複メールアドレスが存在したときは
その行を取り除くということは出来るのでしょうか。
困っています(;;)教えてください。
0410デフォルトの名無しさん
2006/01/16(月) 11:39:460411ゆみ
2006/01/16(月) 11:44:33是非教えてください。。。
0412デフォルトの名無しさん
2006/01/16(月) 11:44:49perl -ne "/,(.+)/ && !$dup{$1}++ && print" in.csv > out.csv
0413ゆみ
2006/01/16(月) 11:51:59ありがとうございます(*^^*)
これはコマンドプロンプト(PC)上で行う処理方法でしょうか?
サーバー上のCGIファイルの中で処理する場合の書き方はありますか?
またin.csvというのが元のデータファイルで、out.csvというのが
出力された新しいファイルですよね?
0414ゆみ
2006/01/16(月) 12:02:04これも試してみましたがうまくいきません。
1万行以上あるのに新しく作られたファイルは60行足らず。
もしかすると私の説明不足なのかもしれません。
重複したメールアドレスの存在しない日付,メールアドレス
のリストを作りたいのですが。。。
意味わかりますでしょうか(**)ごめんなさい。。。
0415デフォルトの名無しさん
2006/01/16(月) 13:54:12m月d日に誰からメールが来てるかのリストを作るのか?
だったらDBに読み込んでクエリ書いた方が手っ取り早いと思われ。
SELECT dateval, addr FROM infile GROUP BY dateval, addr;
0416デフォルトの名無しさん
2006/01/16(月) 15:43:02てことはまず日で分けて、その中に同じアドレスがあっても1つで出すということだな。
じゃあこれを参考に作れ。
my %data;
while (<>) {
chomp;
if (/^([^,]+),(.+)$/) {
$data{$1}{$2} = 1;
}
}
for my $day (sort keys %data) {
for my $addr (sort keys %{$data{$day}}) {
print "$day,$addr\n";
}
}
0417デフォルトの名無しさん
2006/01/16(月) 15:45:47何がどう仲間なのか全然分からん。
もっと詳しく説明するように。
0418デフォルトの名無しさん
2006/01/16(月) 19:15:13こんなのか?データは標準入力から。
my @ary=();
my @index=();
sub pushme($$)
{
my ($ary,$val)=@_;
my $i;
for($i=$val;!UNIVERSAL::isa($ary->[$i],'ARRAY');$i=$ary->[$i]){}
push(@{$ary->[$i]},$val);
}
while($_=<STDIN>){
/^(\d+)\t(\d+)$/;
if(defined($ary[$1])){
$ary[$2]=$1;
pushme(\@ary,$2);
}elsif(defined($ary[$2])){
$ary[$1]=$2;
pushme(\@ary,$1);
}else{
my @newary=($1,$2);
$ary[$1]=\@newary;
$ary[$2]=$1;
}
foreach(@ary){
if(ref($_) && ref($_) eq 'ARRAY'){
print join(",",@$_)."\n";
}
}
0419418
2006/01/16(月) 19:18:56渡さなくともここでは @ary は有効なスコープ。
0420デフォルトの名無しさん
2006/01/16(月) 20:08:55@list = ( "1\t3", "1\t5", "1\t7", "2\t6", "2\t8", "3\t5", "3\t11" );
$tmpstr .= join ':', map "\t$_", @list;
1 while $tmpstr =~ s/(\t\d+)((?:\t\d+)*):((?:[^:]*:)*)((?:\t\d+)*)\1((?:\t\d+)*)(?::|$)/$1$2$4$5:$3/;
1 while $tmpstr =~ s/(\t\d+)((?:\t\d+)*)\1(?=\t|:)/$1$2/;
@grouping = map [/(\d+)/g], split ':', $tmpstr;
$" = ",";
print "@{$grouping[0]}と@{$grouping[1]}\n";
0421408
2006/01/16(月) 21:04:13$nakama[0]="1\t3";
$nakama[1]="1\t5";
……
という風に入っていて、それぞれ1と3は仲間、1と5は仲間という意味になっています。
1と3が仲間で、3と11が仲間であれば1と11も仲間とします。
これで>>408を 1,3,5,7,11と 2,6,8に分けたいのです。
0422デフォルトの名無しさん
2006/01/16(月) 21:06:04おお、更新していなくて分かりませんでした。
それでうまく出来ました。ありがとうございます!
0423ゆみ
2006/01/16(月) 23:00:24私はホントに初心者で・・・説明べたで申し訳御座いません。
416さんのは同じ日付内で同じメアドがあった場合、排除するという
内容でしょうか?
たとえば
1月1日,[email protected]
1月1日,[email protected]
1月1日,[email protected]
1月2日,[email protected]
1月2日,[email protected]
1月3日,[email protected]
1月3日,[email protected]
1月4日,[email protected]
とあった場合、
↓↓↓変換後↓↓↓↓
1月3日,[email protected]
1月3日,[email protected]
1月4日,[email protected]
というように同じメアドが重複しないように更に日付は最新(最下段)
の日付を付けてリスト化したいのです。。。
日付は最上段のものでも構いませんが。。。
出来れば。。。できれば。。。データファイルの読み込み部分から
解説して頂けないでしょうか。。。DBではなく、テキストファイルなんです。。。
本当にすみません(><)(;;)
0424デフォルトの名無しさん
2006/01/16(月) 23:19:380425デフォルトの名無しさん
2006/01/16(月) 23:25:50初心者初心者連呼するならエクセルのフィルタ使うとかにしたほうがいいんでない?
0426ゆみ
2006/01/16(月) 23:33:08ではファイルの読み込み部分は結構です。。。
>>425それでは意味がないのです。。。
お願いします!!!(;;)
0427デフォルトの名無しさん
2006/01/16(月) 23:39:52次の答えを教えてください。
以下のタグを結合したい。
(1)<M>hogeM</M><X>hogeX</X> → <X>hogeMhogeX</X>
(2)<X>hogeX</X><M>hogeM</M> → <X>hogeXhogeM</X>
(3)<M>hogeM</M><X>hogeX</X><M>hogeM</M> → <X>hogeMhogeXhogeM</X>
※<M>hogeM</M><X>hogeX</X><M>hogeM</M><X>hogeX</X> は結合しない。
<例>
※以下は一行で、\ は連結の意味です。
......hoge.......<M>hogeM</M><X>hogeX</X>.....\
........hoge......<X>hogeX</X><M>hogeM</M>.....\
.....hoge.........<M>hogeM</M><X>hogeX</X><M>hogeM</M>...\
.........<X>hogeX</X>................<M>hogeM</M>..\
..<M>hogeM</M><X>hogeX</X><M>hogeM</M><X>hogeM</X>
↓
......hoge.......<X>hogeMhogeX</X>.......\
......hoge......<X>hogeXhogeM</X>..........hoge....\
.....<X>hogeMhogeXhogeM</X>............<X>hogeX</X>...\
.............<M>hogeM</M>...\
.<M>hogeM</M><X>hogeX</X><M>hogeM</M><X>hogeM</X>
正規表現でも、何でもOKなのでお願いします。
0428デフォルトの名無しさん
2006/01/16(月) 23:52:530429デフォルトの名無しさん
2006/01/17(火) 00:12:25ヒント: 解く奴も人間
0430デフォルトの名無しさん
2006/01/17(火) 00:36:53無理
0431デフォルトの名無しさん
2006/01/17(火) 01:53:26意味がないってどういうこと?
csvをエクセルに読み込んで重複を消すだけじゃないの?
知識らしい知識もいらんし煽りじゃなくあなたのような人向けだと思うが。
0432デフォルトの名無しさん
2006/01/17(火) 01:59:030433デフォルトの名無しさん
2006/01/17(火) 02:50:39while (<$fh>) {
chomp;
my($date, $mail) = split /,/;
$mails{$mail} = $date;
}
後は自分で何とかしろ。
0434ゆみ
2006/01/17(火) 10:20:52あまりハッシュって使ったこと無かったので・・・
出来ました!!!有難う御座います!!!
0435デフォルトの名無しさん
2006/01/25(水) 21:48:54(例)
.....<1>.....<2>....</2>....<1>.....
↓
.....<1>.............<1>.....
0436デフォルトの名無しさん
2006/01/25(水) 21:50:420437デフォルトの名無しさん
2006/01/25(水) 21:51:45間違えた。
<2></2>を削除する正規表現教えて
(例)
.....<1>.....<2>....</2>....</1>.....
↓
.....<1>.............</1>.....
0438デフォルトの名無しさん
2006/01/25(水) 23:08:100439マル
2006/01/26(木) 01:37:34という風にする場合
if ($name !/あいう/) { &error("名前が間違っています",'NOLOCK'); }
ではないですよね。
「あ」か「い」か「う」というのはどう書けばいいでしょうか。
0440& ◆p8OCeNXbYU
2006/01/26(木) 01:43:21「一」か「二」か「三」か・・・「三十五」か「三十六」という風になります。
一〜三十六までの漢数字を入れなければ投稿できない、という風にしたいのです。
自動で貼られてしまう広告よけのためなのですが、
何卒よろしくお願い致します。
0441マル
2006/01/26(木) 01:50:090442& ◆p8OCeNXbYU
2006/01/26(木) 02:34:09|で区切ればorの意味になるようでした。
if ($name !~/一|二|三/) { &error("名前が間違っています",'NOLOCK'); }
というような感じで動きました。失礼しました。
0443デフォルトの名無しさん
2006/01/26(木) 03:41:24マジで・・
0444デフォルトの名無しさん
2006/01/26(木) 10:33:450445デフォルトの名無しさん
2006/01/26(木) 12:21:36><2>.*?</2>
".*?"という文字列はGoogleで検索できないため、申し訳ありませんが、
意味を教えていただけますでしょうか?
.*は文字の0個以上(.+は1個以上)にマッチだと思いますが、これに?が付いた
.*?がいまいち、よく分かりません。
0446デフォルトの名無しさん
2006/01/26(木) 12:50:59Perl はググる前に perldoc 。
http://www.kt.rim.or.jp/~kbk/perl5.005/perlre.html#Regular_Expressions
0447デフォルトの名無しさん
2006/01/27(金) 11:51:12use encoding でエンコード指定しておいて
$name !~ /[あいう]/ で判定する方がいいと思う。
0448デフォルトの名無しさん
2006/01/27(金) 11:54:17最小マッチ
デフォルトは最大でマッチする。
たとえば 'abcabcabcabc' という文字列に対して /a.*a/ は 'abcabcabca'
の部分がマッチするが /a.*?a/ だと 'abca' がマッチする。
0449sage
2006/01/27(金) 17:48:26ありがとうございます。
>最小マッチ
Perl歴17年ですが、この正規表現は見落としていました。
わざわざ、(1)のような書き方をしてきましたが、
(1) <2>[^<]*</2>
(2)の方が読みやすいですね?
(2) <2>.*?</2>
勉強になりました。
0450デフォルトの名無しさん
2006/01/27(金) 17:53:340451デフォルトの名無しさん
2006/01/27(金) 17:54:23詳説 正規表現 第2版まじおすすめ
0452デフォルトの名無しさん
2006/01/27(金) 19:28:060453449
2006/01/27(金) 21:55:45>Perl 歴 17 年で正規表現もまともに使えない
正規表現の基本が分かっていなかったので、人にPerlを教える
のは無理でしょうが、研究機関の仕事を主にPerlでこなして
きたことは嘘ではありません。どんな書き方でも、限られた
時間内にバグがないスクリプトが書ければ、仕事がこなせま
す。
perlの良いところは、Larry Wallが言うように、>> 449 の
(1)でも(2)でも、様々な方法で目的が達成できる点です。
0454デフォルトの名無しさん
2006/01/27(金) 22:01:37一生VB・HSPやってるようなモンだな
進歩がなけりゃただの・・
0455デフォルトの名無しさん
2006/01/27(金) 22:12:420456デフォルトの名無しさん
2006/01/27(金) 23:32:19こなせてないじゃん。
>>435 程度のことも人に聞かないと出来ないんだろ?
0457デフォルトの名無しさん
2006/01/28(土) 14:14:55http://history.perl.org/PerlTimeline.html
まあ17年前からPerl(というかUNIX)やってて正規表現知らないなんて
ありえない
0458デフォルトの名無しさん
2006/01/28(土) 15:43:49ttp://d.hatena.ne.jp/naoya/20050809/
のレベル5に
> 多くの人たちがこのレベルを超えないのは、たとえ非効率であっても、
> 再利用可能なコンポーネントの作成を除けば、ほどんど何でもできるからである。
とあるように、必要性を感じられなければそれ以上のものはなかなか知ることが出来ないんだろうね…人間ってのは。
この機会にPerl5の奥深さを学んでみたらどうだ?その霧の先には素晴らしい世界が広がっているぞ
0459デフォルトの名無しさん
2006/01/28(土) 17:48:46最短マッチが使えるようになったのはPerl5以降だよ。
それ以前に覚えた正規表現をそのまま使い続けていたんだろうね。
0460デフォルトの名無しさん
2006/01/28(土) 18:00:14斜め読みしてた
0461デフォルトの名無しさん
2006/01/30(月) 15:42:23くっ。負けた。俺、Perl歴16年。
0462デフォルトの名無しさん
2006/01/31(火) 17:18:44♂チームと♀チームが2つのコートで♂♀別総当り戦をしたく
両コート同時進行として
♂が4チーム・♀が2チームの場合・・・
【Aコート】 【Bコート】
♂1-♂2 ♂3-♂4
♀1-♀2 ♂1-♂3
♂2-♂4 ♀1-♀2
↑の3回戦で総当りになる。
では♂が7チーム・♀が3チームってなったとき
どう組み合わせればよいかみたいなのを計算させたいです。
できれば3連チャンとかで試合することにならないように・・・
0463デフォルトの名無しさん
2006/01/31(火) 17:30:13♀1-♀2 が2回あるのはただの総当りではないと思われるが
どういう規則なのかね?
0464デフォルトの名無しさん
2006/02/01(水) 11:03:17スミマセン間違いです・・・。
♂が4チーム・♀が2チームの場合・・・
【Aコート】 【Bコート】
♂1-♂2 ♂3-♂4
♀1-♀2 ♂1-♂3
♂2-♂4 -
0465デフォルトの名無しさん
2006/02/05(日) 15:52:03こうですか? わかりません。
use strict;
use warnings;
local($a,$b);
my(@t,@p,@f,@ct,$w,$i,$j,$k);
($t[0],$p[0])=('',$f[0]='0');
$t[$_]='♂'.$_,$p[$_]=0,$f[$_]='011111111000',substr($f[$_],$_,1)='0' for (1..8);
$t[$_]='♀'.($_-8),$p[$_]=0,$f[$_]='000000000111',substr($f[$_],$_,1)='0' for (9..11);
@ct=('A:',' B:');
do {
++$_ for (@p);
for (@ct) {
$a=$b=$w=0;
for $k (1..$#p) {
$i=$j=0;
($i,$j) = ($p[$_]>$j && substr($f[$_],$k,1))?($_,$p[$_]):($i,$j) for ($k..$#f);
($a,$b,$w) = ($k,$i,$j<$p[$k] ? $j : $p[$k]) if $p[$k] && $j && ($w<$p[$k] || $w<$j);
}
print $_,$t[$a],'−',$t[$b];
$b=$p[$a]=$p[$b]=substr($f[$a],$b,1)=substr($f[$b],$a,1)=0;
}
print "\n";
$b+=/1/ for (@f);
} while($b);
0466デフォルトの名無しさん
2006/02/06(月) 13:29:43CPAN には、順列、組み合わせを扱う Algorithm::Permute
というモジュールがある。これが使えるんじゃないの?
(オレは使ったことは無いけど)
0467デフォルトの名無しさん
2006/02/08(水) 10:27:13ないだろうか。同じチームがなるべく連続しないようにするなど。
そして最後にコート分けする。
0468デフォルトの名無しさん
2006/02/11(土) 11:07:49直リンクされたことによって消滅するアップローダは多いからな
perl で書かれたものキボン
0469デフォルトの名無しさん
2006/02/11(土) 13:48:02http://pc8.2ch.net/test/read.cgi/tech/1138519327/308
0470デフォルトの名無しさん
2006/02/11(土) 13:49:32ってかんなもんすでにあんだろが
0471デフォルトの名無しさん
2006/02/12(日) 06:11:09直リンクを不可能にするような状態のcgiアップローダのスクリプトって配布されてる?
されていないんじゃ?
0472デフォルトの名無しさん
2006/02/12(日) 11:00:380473デフォルトの名無しさん
2006/02/24(金) 06:43:470474デフォルトの名無しさん
2006/02/24(金) 08:44:13ソケットは飛ばない。
perl -MLWP::Simple -e "get q|http://www.example.com/path/to/file.html|"
0475デフォルトの名無しさん
2006/02/27(月) 01:08:32正規表現だったらどうなるでしょうか?
0476デフォルトの名無しさん
2006/02/27(月) 01:11:06変更しなければならないものが100近くあるので^^;助けてください
0477デフォルトの名無しさん
2006/02/27(月) 01:21:50そんな見当違いな質問をしてると
perlのスクリプトを書いても「どうやって実行するんですか?」
とか聞かれそうだと思われて誰にも相手されないよ
0478デフォルトの名無しさん
2006/02/27(月) 01:28:06名前の変更(M)とか書いてる所を見るとWindowsだと思うが、
ファイル名をマジで変えるだけなら、DOS窓で
C>CD 変えたいファイルがあるディレクトリ
C>RENAME *.gif *.bmp
でいいんじゃマイカ?
UNIX系なら
% cd 変えたいファイルがあるディレクトリ
% mv *.gif *.bmp
どちらにしろ同じか。
※ データ形式は変わらないから開けなくてもしらん。
0479デフォルトの名無しさん
2006/02/27(月) 01:48:34> % mv *.gif *.bmp
> % mv *.gif *.bmp
> % mv *.gif *.bmp
> % mv *.gif *.bmp
> % mv *.gif *.bmp
> % mv *.gif *.bmp
0480デフォルトの名無しさん
2006/02/27(月) 03:01:53それは Windows/DOS じゃないと使えない技だぞ。
0481デフォルトの名無しさん
2006/02/27(月) 03:34:00Windows前提で答えれば良いっしょ
0482デフォルトの名無しさん
2006/02/27(月) 11:36:48拡張子がbmpであるgifファイルを作りたいんだね。
いや、きっとそうなんだろうね。質問の内容からして
そうだし、他の人もそう理解しているようだし。
0483デフォルトの名無しさん
2006/02/27(月) 12:17:250484デフォルトの名無しさん
2006/02/27(月) 15:27:57有難うございました。WinとLinux(UNIX)では、コマンドが違うからsystem()関数を使っても
同じプログラムとはいかないわけでしたね。
それに、Perlを使わなくてもできるんですね。
Cで書かれたコマンドがすでにあるからこれを使わない手は無いですね。OSにです。
0485デフォルトの名無しさん
2006/02/27(月) 15:30:280486デフォルトの名無しさん
2006/02/27(月) 15:31:530487デフォルトの名無しさん
2006/02/27(月) 15:34:070488デフォルトの名無しさん
2006/02/27(月) 15:35:300489デフォルトの名無しさん
2006/02/27(月) 19:52:060490デフォルトの名無しさん
2006/02/28(火) 00:02:260491デフォルトの名無しさん
2006/02/28(火) 00:24:24乙w死ねw
0492デフォルトの名無しさん
2006/02/28(火) 00:26:39リアルで会ったら頭蹴り飛ばして殺してやるのにw
0493490
2006/02/28(火) 00:32:52人格異常者だと思われてるから、普段リアルで誰にも相手されないよ〜
0494490
2006/02/28(火) 00:37:48腹が立ったので、帰る際後ろから面接官の頭蹴り飛ばしてやりました。
電車に乗ると、たくさんのひとの頭を蹴り飛ばさなければならないので
怖くて乗れません。
0495490
2006/02/28(火) 00:39:550496デフォルトの名無しさん
2006/02/28(火) 00:42:550497デフォルトの名無しさん
2006/02/28(火) 00:45:320498490
2006/02/28(火) 00:46:15C>RENAME *.gif *.bmp
死ね
0499490
2006/02/28(火) 00:53:16で、だれ?おまえら
0500デフォルトの名無しさん
2006/02/28(火) 00:58:17500
0501デフォルトの名無しさん
2006/02/28(火) 01:00:00>>478以外、まともな人間はいなさそうだw
0502490
2006/02/28(火) 01:01:11% mv *.gif *.bmp
0503デフォルトの名無しさん
2006/02/28(火) 01:03:27(;´д`) いや 話しかけてこないで。さよなら
0504デフォルトの名無しさん
2006/02/28(火) 01:45:20gyouで行やら業やらぎょうやらギョウやらgyouやら
0505デフォルトの名無しさん
2006/02/28(火) 02:04:590506デフォルトの名無しさん
2006/02/28(火) 17:45:140507デフォルトの名無しさん
2006/02/28(火) 18:53:11migemo の「辞書」が完璧じゃないんだろ?
「辞書」をしっかり作れ。Perlでmigemoみたいなこと
をやるにせよ、辞書が命だ。
0508505
2006/02/28(火) 23:27:34死ね
0509デフォルトの名無しさん
2006/03/01(水) 17:08:44うはwwwカッコヨスwwww
俺にも氏ねって言ってぇぇvvvvvv
0510505
2006/03/02(木) 04:09:38しねしねしねー♪从´∇`从
0511デフォルトの名無しさん
2006/03/06(月) 21:20:040=あ
1=1
略
49=を
50=ん
って感じに変換するにはどーすればいいんですか?
0512デフォルトの名無しさん
2006/03/06(月) 21:24:120513デフォルトの名無しさん
2006/03/06(月) 21:33:41my %c = (
'0' => 'あ',
'1' => '1',
# 略
'49' => 'を',
'50' => 'ん'
);
などと作っておいて $c{$count} のような感じで対応する文字列を求める。
0514デフォルトの名無しさん
2006/03/11(土) 00:49:18楽天とかで任天堂DSを購入するスクリプト組んでくれよ。人力じゃ無理 買えないw
0515デフォルトの名無しさん
2006/03/12(日) 16:39:030516デフォルトの名無しさん
2006/03/12(日) 16:52:43use LWP::Simple;
while (1) { get 'http://pc8.2ch.net/test/bbs.cgi'; }
0517デフォルトの名無しさん
2006/03/12(日) 16:53:390518デフォルトの名無しさん
2006/03/12(日) 16:54:450519デフォルトの名無しさん
2006/03/12(日) 17:18:26use LWP::Simple;
while (1) {
get 'http://pc8.2ch.net/test/bbs.cgi';
sleep 30;
}
0520デフォルトの名無しさん
2006/03/12(日) 17:40:110521デフォルトの名無しさん
2006/03/12(日) 17:47:130522デフォルトの名無しさん
2006/03/12(日) 18:49:390523デフォルトの名無しさん
2006/03/12(日) 18:51:080524デフォルトの名無しさん
2006/03/15(水) 20:52:250525デフォルトの名無しさん
2006/03/16(木) 23:41:18半角数字と全角数字が混在したテキストがありまして、
一桁のみの数字は全角、二桁以上の数字は半角に統一したいのです。
中身を見てみると、「33」とか「679」とかになっていて、
どういう入力をしたのか不思議でなりません。
何かよいお知恵はないでしょうか。
Perl 5.8.1、Mac OS XのTerminalで作業をしています。
入力ファイルのエンコードはUTF-16(中国語処理のため)、
use utf8;で処理しています。
0526デフォルトの名無しさん
2006/03/16(木) 23:43:46s/1/1/
0527デフォルトの名無しさん
2006/03/17(金) 00:20:140528525
2006/03/17(金) 23:51:02>>527
こんな感じで書いてみました。
while(<>) {
tr/[0-9]/[0-9]/;
s/(¥D)1(¥D)/$11$2/g;
(中略)
s/(\D)9(\D)/$19$2/g;
print;
}
ただ、これだと2回同じ処理をしないといけないですよね。
最初の処理でtr行、次の処理でs行になるんでしょうか。
これを効率よく1回の処理ですませたいのですが、いいやり方をご存知ないですか?
0529ヽ(´ー`)ノ ◆.ogCuANUcE
2006/03/18(土) 00:13:06use Unicode::Normalize;
$str = NFKC($str);
$str =~ s/(?<!\d)(\d)(?!\d)/(my $ret = $1) =~ tr[0-9][0-9]; $ret/ge;
これでどうだろう。
0530デフォルトの名無しさん
2006/03/18(土) 17:46:30逆。数字をまず全部全角にして、
その後2文字以上連続する全角数字を半角にする。
0531http://www.vector.co.jp/soft/win95/util/se072729.html
2006/03/18(土) 21:12:31もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
そういや64bitにネイティブ対応している2chブラウザてありましたっけ?
0532デフォルトの名無しさん
2006/03/18(土) 21:35:05なんかいいことあんの?
0533デフォルトの名無しさん
2006/03/18(土) 22:40:20マルチ + スレ違い乙
0534525
2006/03/18(土) 23:37:27ご指摘どうもありがとうございます。
他にも処理が山ほどあり、あまり時間がなくてテンパってました。
>529
うまくいきました。どうもありがとうございました。
こういうときに先読み・後読みを使うんですね。
教えていただいたものを流用して、
2桁のみ半角にすることもできました。
0535ヽ(´ー`)ノ ◆.ogCuANUcE
2006/03/19(日) 00:33:20カタカナだけなんだな。
日本語処理で凝ったことしようと思ったら、Jcode なんかねぇ…。
0536デフォルトの名無しさん
2006/03/19(日) 03:25:47読み込みの段階で64ビットは有利
0537デフォルトの名無しさん
2006/03/19(日) 09:25:180538デフォルトの名無しさん
2006/03/22(水) 21:16:20「¥」と来たか。「\」ではないと。
0539デフォルトの名無しさん
2006/03/29(水) 06:15:44数字を有効数字の桁数で丸めるスクリプトを探しています。
例えば、round(数字, 桁数)の形で使うとすると、
round(-12345.067, 4)
round(-12345.067, 7)
round(0.0567, 1)
round(1234567890123456, 4)
は、それぞれ
-12350
-12345.07
0.06
1.235e+015
を返す、というようなものなんですが、どなたかお願いできませんか
0540デフォルトの名無しさん
2006/03/29(水) 12:19:00使えると思うから、値の範囲かなんかで場合分けしてそれぞれ食わせればいいんで
ないかな。
0541539
2006/03/29(水) 23:21:01出来ました。どうもです。
あと、CPANを漁っていたらNumber::Formatに似たような機能をみつけたので、
これを改変してもうまくいきました。
sub round {
my ($number, $digits) = @_;
my $sign = $number <=> 0;
my $result = abs($number);
my $index;
if($number =~ /(.*)e(.*)/) {
$result = $1;
$index = $2;
}
my $precision = $digits - length(int($result));
if($result =~ /^0(\.0*)/) {
$precision += length($1);
}
my $multiplier = (10 ** $precision);
$result = int($result * $multiplier + 0.5000001) / $multiplier;
$result = -$result if $sign < 0;
$result *= (10 ** $index) if $index;
return $result;
}
0542デフォルトの名無しさん
2006/03/32(土) 03:59:17$ip_data <<END_DATA; #外部ファイルから読み込んだデータ(実際は約2万4千行程度)
国名A-221.184.0.0-221.191.255.255
国名B-221.240.0.0-222.15.255.255
国名C-222.144.0.0-222.151.255.255
END_DATA
foreach (@ip_data) {
($cctld,$ip_a,$ip_b) = split(/-/,$_);
if ( 判定ルーチン ){$ans = $cctld
last;
}
}
print $ans;#この場合は"国名B"と表示したい
$ip_dataを参照して$ip_sampleの値が$ip_dataのどの行に在るかの判定を行い
$ansへ該当する$ip_deta行の$cctldを返すようにしたいのですが
判定方法でつまずいています。gethostxxx関数を使えという方向は無しにして
元の$ip_dataを増やさずに行える極力短い判定のルーチンを教示おねがいします
このテの質問はwebプでやれと言われそうな気がするけど質問の内容が
板を選ぶ以前のレベルの自覚があるので敢えてこちらに投下しまふ。
0543デフォルトの名無しさん
2006/03/32(土) 06:32:36my $target = "222.4.0.0";
my @iptable = qw( 国名A-221.184.0.0-221.191.255.255 国名B-221.240.0.0-222.15.255.255 国名C-222.144.0.0-222.151.255.255 );
$target = pack("C"x4, split(/\./, $target));
for(@iptable){
my($country, $from, $to) = split /-/;
$from = pack("C"x4, split(/\./, $from));
$to = pack("C"x4, split(/\./, $to));
if($from le $target && $target le $to){
print "$countryが範囲内でした\n"
}
}
0544デフォルトの名無しさん
2006/03/32(土) 06:34:47早速走らせて見ます
実は・・・・
- foreach (@ip_data) {
+ foreach ($ip_data) {
ですた、阿呆ですんませんです・・・ orz
0545デフォルトの名無しさん
2006/03/32(土) 07:51:49データを読みながら1回から2万4千回判定するのがいいか、
全部配列に読み込んでおよそ5回判定するのがいいか。
0546デフォルトの名無しさん
2006/03/32(土) 07:54:500547542
2006/03/32(土) 14:00:16web鯖にはまだ置いてませんが手元の環境では問題なく動きました。
答えを教えてもらうと、なるほどなぁと納得行くのですが
その答えをせめて自分で作れるまでにはなりたいです。
ネットでも資料沢山あるけどラクダ本がほしくなったので
日曜日にでも街に探しにイッテキマス
目標は脱ド初心者w
>>545
できれば色々なパターンをベンチ取って一番軽い処理を使いたいですw
どうしても重かったらIP国別データを2〜3000行程度に分けて
IPの最初の8ビットを参照して呼び分けてみようかなと思ってますが・・・
0548デフォルトの名無しさん
2006/03/32(土) 20:14:29アルゴリズムの勉強したほうがいいよ。
>>545-546でバイナリサーチに気づかないのはかなり重症
0549デフォルトの名無しさん
2006/04/02(日) 05:03:280550デフォルトの名無しさん
2006/04/02(日) 05:08:26>>547
IPをキー、国名を値にもつハッシュを作り、データベースクラスにtieしてみては?
2万4千行をメモリに持つのはつらいと思う。
0551550
2006/04/02(日) 05:38:58my $data = <<EOF;
A-221.184.0.0-221.191.255.255
B-221.240.0.0-222.15.255.255
C-222.144.0.0-222.151.255.255
EOF
unlink 'test.db';
use Fcntl;
use DB_File;
tie my %db, 'DB_File', 'test.db', O_RDWR|O_CREAT, 0644, $DB_BTREE or die;
foreach(split/\n/, $data) {
my ($country, $from, $to) = split /-/;
for($from, $to) {
s/(\d+)\.(\d+)\.(\d+)\.(\d+)/$1*256**3+$2*256*256+$3*256+$4/e;
}
$db{$from-1} = 'N/A';
$db{$to} = $country;
}
untie %db;
sub find_country {
my $query = shift;
$query =~ s/(\d+)\.(\d+)\.(\d+)\.(\d)/$1*256**3+$2*256*256+$3*256+$4/e;
my $x = tie my %db, 'DB_File', 'test.db', O_RDONLY, 0644, $DB_BTREE or die;
my ($ip, $country) = ($query, 'N/A');
$x->seq($ip, $country, R_CURSOR);
return $country;
}
print find_country('221.239.0.1');
0552デフォルトの名無しさん
2006/04/02(日) 06:41:56$ip = unpack('N', pack('CCCC', split(/\./, $ip)));
これで2倍くらいの速度になった
キャプチャが大きいんかなぁ
2個目のIPアドレス変換部分、最後が\d+じゃなくて\dになってたよ。
桁数が多いから計算ミスかと思ったけど、数字が文字列として尻についてただけなんだね。
0553デフォルトの名無しさん
2006/04/04(火) 17:06:58use Socket; して inet_aton() 使ったら?
0554デフォルトの名無しさん
2006/04/05(水) 11:25:50・「.」でばらすのはsplitより正規表現でキャプチャする方が速い
・4つの10進数から32bit整数にするのは、シフト>掛け算>pack-unpackの順で速い。
552の言うのとは逆の結果になったわけだがなんでかね?
Benchmark: running inet_aton, multiple_re, shift_re, unpack_re, unpack_split for at least 3 CPU seconds...
inet_aton: 5 wallclock secs ( 1.62 usr + 1.46 sys = 3.08 CPU) @ 425.97/s (n=1312)
multiple_re: 7 wallclock secs ( 3.26 usr + 0.00 sys = 3.26 CPU) @ 229803.99/s (n=749161)
shift_re: 3 wallclock secs ( 3.08 usr + 0.03 sys = 3.11 CPU) @ 274049.84/s (n=852295)
unpack_re: 3 wallclock secs ( 3.10 usr + 0.00 sys = 3.10 CPU) @ 183073.87/s (n=567529)
unpack_split: 4 wallclock secs ( 3.13 usr + 0.00 sys = 3.13 CPU) @ 119672.52/s (n=374575)
0555デフォルトの名無しさん
2006/04/05(水) 11:26:39use Benchmark;
use Socket qw(inet_aton);
my $ip_a = 100.100.100.100;
timethese(undef,
{
unpack_split => sub {
my $ip = unpack('N', pack('CCCC', split(/\./, $ip_a)));
},
unpack_re => sub {
$ip_a =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $ip = unpack('N', pack('CCCC', $1, $2, $3, $4));
},
multiple_re => sub {
$ip_a =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $ip = $1*256*256*256 + $2*256*256 + $3*256 + $4;
},
shift_re => sub {
$ip_a =~ /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/;
my $ip = $1 << 24 + $2 << 16 + $3 << 8 + $4;
},
inet_aton => sub {
my $ip = inet_aton($ip_a);
},
}
);
0556デフォルトの名無しさん
2006/04/05(水) 12:29:42my $ip_a = 100.100.100.100;
になっていたorz... もちろん正しくは
my $ip_a = '100.100.100.100';
なのでベンチ取り直した。
Benchmark: running inet_aton, multiple_re, shift_re, unpack_re, unpack_split for at least 3 CPU seconds...
inet_aton: 3 wallclock secs ( 3.16 usr + 0.00 sys = 3.16 CPU) @ 267949.37/s (n=846720)
multiple_re: 3 wallclock secs ( 3.16 usr + 0.00 sys = 3.16 CPU) @ 69144.94/s (n=218498)
shift_re: 4 wallclock secs ( 3.11 usr + 0.00 sys = 3.11 CPU) @ 74248.87/s (n=230914)
unpack_re: 3 wallclock secs ( 3.21 usr + 0.00 sys = 3.21 CPU) @ 68071.03/s (n=218508)
unpack_split: 2 wallclock secs ( 3.13 usr + 0.00 sys = 3.13 CPU) @ 95474.76/s (n=298836)
まとめ:
inet_atonはやっぱり速いので、自分で書くのはやめよう。
0557デフォルトの名無しさん
2006/04/05(水) 13:42:14・ inet_atonはpackしたIPアドレス("100.100.100.100"なら"dddd")を返すのに、他は整数(1684300900)を算出している。
・ "+"演算子は"<<"演算子より優先度が高いため($1 << 24)とカッコで括らなければならない。
一応 sub getRandIPString { join '.', int rand 256, int rand 256, int rand 256, int rand 256; } といったものを用意して
全てバイナリ文字列を出力するコードにしてからベンチ取ったけど、inet_atonが常に1位だった。
今更だけど、後で直接比較可能にするための前処理として保存しとけば速度関係無かったね。
0558デフォルトの名無しさん
2006/04/19(水) 06:59:49Macで作成したテキストを処理したいのですが、改行コードがCRになるのでうまく処理できません。
LFでないため、全て1行として認識されてしまいます。
標準入力を常にLFとして読み込んだ後、それに対してマッチや置換を行いたいのです。
以下のように書いてみましたけどダメでした。
while (<>) {
s/\x0D\x0A|\x0D|\x0A/\x0A/g;
if (/aaa/) {
print;
}
}
出力されたデータはLFになりましたが、マッチはうまくいきませんでした。
何かいいやり方はないものでしょうか。
0559デフォルトの名無しさん
2006/04/19(水) 09:14:570560558
2006/04/19(水) 19:51:43入力時の区切り文字をCRに決めてやればいいんですね。
解決しました。ありがとうございました。
0561デフォルトの名無しさん
2006/04/19(水) 23:24:22あいうえお(段落1)
かきくけこ(段落2)
さしすせそ(段落3)
たちつてと(段落4)
なにぬねの(段落5)
はひふへほ(段落6)
という文章があって、これを、
1:あいうえお(段落1)
2:かきくけこ(段落2)
3:さしすせそ(段落3)
1:たちつてと(段落4)
2:なにぬねの(段落5)
3:はひふへほ(段落6)
のように空行をはさんで新たにナンバリングを開始したいのですが方法が思い浮かびません。
0562デフォルトの名無しさん
2006/04/19(水) 23:59:01ナンバリング用の変数を初期化して空行を出力するだけじゃないのか?
0563デフォルトの名無しさん
2006/04/20(木) 02:27:540564561
2006/04/20(木) 23:04:01あっ、はい。
my $i = 0;
while (<STDIN>) {
if (/^./) {
print ++$i;
print ": ";
print;
}
}
ちょっと冗長ですけど。
0565デフォルトの名無しさん
2006/04/21(金) 00:11:570566デフォルトの名無しさん
2006/04/21(金) 10:46:46そこまでかけるなら
else で $i = 0; を書けないか?
0567デフォルトの名無しさん
2006/04/21(金) 10:55:29$n = 1;
while (<>) {
$n = 1 if (/^\s*$/
print "$n: $_";
$n++;
}
0568デフォルトの名無しさん
2006/04/21(金) 10:58:130569561
2006/04/21(金) 22:35:44elseを使っても結果が変わらないんです。
マッチがヘボいんでしょうか。
>567
実行させると入力がぶっとんでしまいました…
>565
いろいろ試してみたのですが、自分の力ではムリっぽいです…
あつかましいとは承知していますが、作っていただくと助かります。
0570561
2006/04/22(土) 19:48:05my $i = 0;
while (<STDIN>) {
if (/^..+/) {
print ++$i;
print ": ";
print;
} else {
$i = 0;
print;
}
}
else文で「my $i = 0;」にしていたのがまずかったようで、
空行になっても$iが初期化されなかったみたいです。
レス下さったみなさん、ありがとうございました。
おさわがせしました。
私ってPerlの才能ないのかな…
0571デフォルトの名無しさん
2006/04/23(日) 05:53:25完成おめ!
才能がどうかは知らないけど、結局経験じゃないですかね?
俺も本スレで叩かれたりしながら勉強してますw
一応俺が用意してたスクリプト貼っておきます。。。
use strict;
my $c = 1;
open IN, 'filename';
while (<IN>) {
(/^$/) ? $c = 1 : print $c++ . ':';
print;
}
close IN;
0572561
2006/04/23(日) 12:42:55ありがとうございます。
自分のはだいぶ冗長だと思うので、用意していただいたスクリプトを参考にさせていただきます。
今自分の書いたものを見直してみると、if (/^./)でいいですよね...
恥ずかしい...
0573デフォルトの名無しさん
2006/04/23(日) 14:49:38myはローカル変数の宣言。単なる代入では無いよ。
myを使うと、同名の新たな一時変数を作る事になる。
んで、詳しい条件は忘れたが、ブロック抜ける時とかに消える。
長いコードになると
「この変数名って他で使われて無かったっけ…?」
ってなるけど、my使えばそんな心配が減るワケ。
0574デフォルトの名無しさん
2006/04/23(日) 18:39:57>>560では解決しちゃったみたいだけど、これ俺も知りたい。
コマンドラインから入力されたテキストの改行コードをLFに統一、
という前処理をしてからwhileループ処理をかますってできるのかな?
あんまりセパレータとか変えたくないんで。
0575デフォルトの名無しさん
2006/04/23(日) 21:25:04>セパレータとか変えたくない
なんで?
0576デフォルトの名無しさん
2006/04/23(日) 22:10:27セパレータも一文字として認識されてしまわない?
回避する方法があればいいんだけど。
0577デフォルトの名無しさん
2006/04/23(日) 23:08:11いまいち言いたいことが分からん。
0578デフォルトの名無しさん
2006/04/23(日) 23:40:26でも「.」もCRにマッチしちゃわね?
LF読み込むときと処理が変わっちゃうからイライラすんだよね。
0579デフォルトの名無しさん
2006/04/24(月) 00:10:500580デフォルトの名無しさん
2006/04/24(月) 03:57:290581デフォルトの名無しさん
2006/04/24(月) 23:15:36できないってことでおk?
0582デフォルトの名無しさん
2006/04/25(火) 04:35:210583デフォルトの名無しさん
2006/05/01(月) 22:52:12た・・・す・・・け・・・て・・・・
0584デフォルトの名無しさん
2006/06/15(木) 22:54:05なにもかもがな・・つ・・か・・し・・ぃ・・
0585デフォルトの名無しさん
2006/06/16(金) 20:37:020586デフォルトの名無しさん
2006/07/09(日) 11:10:16浅知恵で掲示板の改造を試みています。
オートリンク機能付き掲示板に記事修正機能を追加したのですが、
記事修正をするたびに、文中にあるリンク先が
<A href=http://www.a.b.c target=_blank><A HREF=http://www.a.b.c target=_blank>
http://www.a.b.c</A></A>
と、タグが無制限に追加されていきます。
そこでお願いしたいのは、
記事修正時にファイルに保存されているデータ
----------------------------------------------
<A HREF=http://www.a.b.c target=_blank>
http://www.a.b.c</A>
----------------------------------------------
を一端
----------------------------------------------
http://www.a.b.c
----------------------------------------------
というデータに戻すサブルーチンを作成したいのですが、
行き詰まっています。
よろしくお願いします。
オートリンク機能のスクリプトは以下の通りです。
***************************************************************
#オートリンク
sub auto_link {
my($msg) = $_[0];
$msg =~ s/([^=^\"]|^)(http\:[\w\.\~\-\/\?\&\+\=\:\@\%\;\#]+)/$1<A HREF=$2 target=_blank>$2<\/A>/g;
return $msg;
}
0587デフォルトの名無しさん
2006/07/09(日) 11:15:33全角にしてありますが、Aタグです。
http://www.a.b.c の後ろは、</A>
0588デフォルトの名無しさん
2006/07/10(月) 01:11:44保存時にいじっちゃうと後でいじりにくくなるというのは定説。
ファイル構造上、改行の置換とかは仕方無いと思うけどさ。
0589デフォルトの名無しさん
2006/07/10(月) 10:01:41ようするに、すでに<A>タグ化されている部分を除外すればいいわけだな?
0590デフォルトの名無しさん
2006/07/10(月) 10:03:49確かに保存時は生データのまま記録し置いて、閲覧時に
http:なんた
0591デフォルトの名無しさん
2006/07/10(月) 10:06:04途中で送信しちゃった。
保存時は生で。閲覧時は「http:なんたら」の条件で抽出→<A>タグ化のほうが効率的だね。
0592586
2006/07/10(月) 14:07:06発想の転換ですね。
私の堅い頭では思いつきませんでした。
保存時ではなく、表示時にオートリンクを適用でうまくいきました。
ありがとうございました。
0593デフォルトの名無しさん
2006/07/18(火) 22:59:04ボタンを押したらカウントが増えるシンプルなシステムを作って欲しいです。
0594デフォルトの名無しさん
2006/07/19(水) 02:59:100595デフォルトの名無しさん
2006/07/19(水) 16:54:07use CGI;
my $cgi=new CGI;
my $n=$cgi->param('n')+1;
print $cgi->header(-charset=>'Shift_JIS'),
$cgi->start_html(-lang=>'ja',-encoding=>'Shift_JIS',-title=>'simple count'),
$cgi->a({href=>"$ENV{'SCRIPT_NAME'}?n=$n"},$n),
$cgi->end_html;
0596デフォルトの名無しさん
2006/07/20(木) 00:02:04<?php
if (! $HTTP_COOKIE_VARS{'Num'}) {
$start=0; $i=1; setcookie("Num",$i,time()+30);
} else {
$i=$HTTP_COOKIE_VARS{'Num'}+1;
setcookie("Num",$i,time()+30);
}
echo $start.$HTTP_COOKIE_VARS{'Num'}."<br>\n";
echo "<form method=POST action=><input type=submit value=count_up></form>\n";
?>
0597デフォルトの名無しさん
2006/07/20(木) 01:41:37<input type="button" value="0" onclick="this.value++">
0598デフォルトの名無しさん
2006/07/20(木) 02:06:110599デフォルトの名無しさん
2006/07/20(木) 20:10:06このスレ自体がアレなのは確かだが
0600デフォルトの名無しさん
2006/07/21(金) 00:49:26# CUI
use Term::ReadKey;
binmode STDIN;
ReadMode 3;
print my $count = 0;
print "\r", ++$count while (defined ReadKey 0);
ReadMode 0;
# GUI(Perl/Tk)版
use Tk;
my $count = 0;
my $mw = MainWindow->new();
my $label = $mw->Label(-text => $count)->pack();
$mw->Button(
-text => 'Count up',
-command => sub { $label->configure(-text => ++$count) },
)->pack();
MainLoop;
0601デフォルトの名無しさん
2006/07/21(金) 12:46:48#!/usr/bin/env perl
print my $i = 0 ; $i ++ ;
system "stty -echo" ;
print "¥e[1K" . $i ++ while <STDIN> ;
system "stty echo" ;
このスクリプト ( hoge.pl )、perlcc が通ったのには笑った。@5.6.6
perlcc -o counter hoge.pl
0602デフォルトの名無しさん
2006/07/21(金) 13:24:24perl -e '`stty cbreak -echo`;print $i++,"\r" while getc'
0603デフォルトの名無しさん
2006/07/21(金) 13:49:370604デフォルトの名無しさん
2006/07/21(金) 17:11:49いや system 関数ってみるからにコンパイルの時コケそうじゃないですか。
0605デフォルトの名無しさん
2006/08/06(日) 00:00:47ETRADEのポートフォリオのページを取得するスクリプトつくって。
6時間考えたけど、いっぱいいっぱい。だめぽ
0606デフォルトの名無しさん
2006/08/06(日) 00:29:530607デフォルトの名無しさん
2006/08/06(日) 00:52:42やっとできたよ。
しばらく POSTとGETの仕組みと INPUTタブの仕組みを
忘れてた。
0608デフォルトの名無しさん
2006/08/06(日) 03:44:010609デフォルトの名無しさん
2006/08/08(火) 10:10:471.jpg, 2.jpg, 3.jpg, ... というように連番のファイル名に変換するプログラムを
つくって頂けませんか。
そのディレクトリには.jpgファイルしか置いてません。(全部変換する)
もともとのファイル名は、*****.jpg もしくは ******.jpg (*は数字)
という形です。
こういうプログラムを作るのにperlが適しているのかどうかはわからないのですが、
他に作成依頼できそうなスレがみつからなかったので。
お願いします。
0610デフォルトの名無しさん
2006/08/08(火) 10:16:02を作ってくれるscriptがほしいです。
0611デフォルトの名無しさん
2006/08/08(火) 10:55:06perl -e'my $i = 1; foreach(glob("*.jpg")) { rename $_, "$i.jpg"; $i ++;}'
動くかどうかはしらん
0612609
2006/08/08(火) 11:52:55できてるぽいです!
ありがとうございます。
0613デフォルトの名無しさん
2006/08/08(火) 16:23:26目的:自分のPCのセキュリティーチェックをしたいので
0614デフォルトの名無しさん
2006/08/08(火) 18:06:170615613
2006/08/08(火) 18:24:59>>614さんのように邪推される方がいると思ったのでアクセスしてきたPCのポートスキャンということにしました。
さらにいうなら、IDパスワード認証をしてそのチェックを通過した人だけセキュリティーチェックできるようにお願いします。
もっともIDパスワードをさらしておいて他人のPCのポートスキャンができることも懸念されますが・・・・。。
0616デフォルトの名無しさん
2006/08/10(木) 16:45:15while (<*>) {
if ((/\.zip$/i) or (/\.rar$/i)) {
open(AAA, "unrar l $_ |") || die "err";
$list = <AAA>;
close(AAA);
}
}
こんなもんで、よろしいんじゃないですか?
0617デフォルトの名無しさん
2006/08/24(木) 20:33:410618デフォルトの名無しさん
2006/08/30(水) 14:53:13リクエストお願いします。
0619デフォルトの名無しさん
2006/08/30(水) 15:34:33例えばlockファイルを使う。perldoc -q lock
use Fcntl qw(:DEFAULT :flock);
sysopen(LCK, "/tmp/lockfile", O_WRONLY|O_CREAT) or die "open: $!\n";
flock(LCK, LOCK_EX|LOCK_NB) or die "flock: $!\n";
sleep 100;
0620デフォルトの名無しさん
2006/08/31(木) 19:03:190621デフォルトの名無しさん
2006/09/07(木) 21:41:40お願いします。。。
0622デフォルトの名無しさん
2006/09/07(木) 21:50:03仕様がはっきりしなさ過ぎて無理
0623デフォルトの名無しさん
2006/09/07(木) 22:12:49タイムアウト処理だけでも無理ですか?
0624デフォルトの名無しさん
2006/09/07(木) 23:40:42964 名前:デフォルトの名無しさん 投稿日:2006/09/07(木) 21:36:27
質問です!
ログインして10分経過後、再認証を行なうプログラムについて教えて下さい。
学校の課題なんですがさっぱり分りません。。。
0625デフォルトの名無しさん
2006/09/08(金) 00:13:210626デフォルトの名無しさん
2006/09/08(金) 16:15:04sleep(300);
0627デフォルトの名無しさん
2006/09/08(金) 19:48:59鯖に「ID=************が何時何分何秒にログインした」ってファイルを
作っておいて、その人がCGIにアクセスするたびに最終ログイン時刻を
チェックする。規定時間をオーバーしていると、ログイン画面に飛ばす。
って感じのやつはダメ?
0628デフォルトの名無しさん
2006/09/12(火) 05:37:49HTMLのタグでやってるの見たことある
ブラウザ側で簡単に回避されるっての…w
0629デフォルトの名無しさん
2006/10/22(日) 15:34:500630デフォルトの名無しさん
2006/10/23(月) 11:35:28「開始」と「終了」の間に入っている文字列をリンクアドレスにするにはどうすればいいですか?
たとえば$STR="開始test.html終了"; とあったとき
出力結果が
<a href=test.html>test.html</a>になるようにしたいんです。
$START="開始";
$END="終了";
0631デフォルトの名無しさん
2006/10/23(月) 12:07:010632デフォルトの名無しさん
2006/10/23(月) 12:34:24http://pc8.2ch.net/test/read.cgi/tech/1161552012/
0633デフォルトの名無しさん
2006/10/23(月) 12:46:540634デフォルトの名無しさん
2006/10/23(月) 13:30:24正規表現で一発やん
0635デフォルトの名無しさん
2006/10/23(月) 14:49:23ごめんなさい、わからないんです。
とりあえず、ここまでは出来ました
「開始」と「終了」に挟まれる$1を抽出した後、その$1をURL形式に変えてアドレスにして置き換えていきたいんです。
例えば
$in{'data'}="開始なにか終了hogehogehoge開始てすと終了"だったとしたら
これが
$in{'data'}="<a href=http://hoge.com/hoge.cgi?keyword=%42%28%39>なにか</a>hogehogehoge<a href=http://hoge.com/hoge.cgi?keyword=%32%86%26>てすと</a>"
みたいな形式に置き換えたいんです
use URI::Escape;
$START="開始";
$END="終了";
$SEARCHADD="http://hoge.com/hoge.cgi?keyword=";
while ($in{'data'}=~ m/$START(.*)$END/g) {
$output = $1;
$urikeyoutput = uri_escape($output);
$in{'data'} =~ s/$START$output$END/<a href=$SEARCHADD$urikeyoutput>$output<\/a/g;
}
0636デフォルトの名無しさん
2006/10/23(月) 16:03:57> while ($in{'data'}=~ m/$START(.*)$END/g) {
これを
while ($in{'data'}=~ m/$START(.*?)$END/g) {
ってすりゃいいんじゃないか?
(.* じゃなくて .*? ってことね)
0637デフォルトの名無しさん
2006/10/23(月) 16:23:43変えてみましたけど、無理でした
while ($in{'data'}=~ m/$START(.*?)$END/g) { の時点で拾ってきてくれてないみたいです
書き方おかしいですか?
0638デフォルトの名無しさん
2006/10/23(月) 16:53:05while ($in{'data'}=~ m/$START(.*)$END/g) { ... の中で更に
$in{'data'} =~ s/$START$output$END/ ... なんてしてるから
マッチ開始位置がおかしな事になる。下の一文で済む。
$in{'data'} =~ s{\Q$START\E(.*?)\Q$END\E} {
my $url = $1;
my $query = uri_escape($url);
qq|<a href="$SEARCHADD$query">$url</a>|;
}eg;
0639デフォルトの名無しさん
2006/10/23(月) 16:58:47ご回答ありがとうございます。
その方法で問題なく出来ましたが
開始、終了のペアが2つ以上でてきた場合エラーが発生します。
$in{'data'} ="開始テスト1終了開始テスト2終了";
だったとき
最初の開始から 最後の終了までを1つだと思っているみたいです
0640デフォルトの名無しさん
2006/10/23(月) 17:16:50大方 (.*?) を (.*) と写し間違えているんだろう。
0642デフォルトの名無しさん
2006/10/23(月) 18:37:030643デフォルトの名無しさん
2006/10/31(火) 00:40:220644デフォルトの名無しさん
2006/10/31(火) 01:27:130645デフォルトの名無しさん
2006/10/31(火) 02:57:14カウントしていくだけのプログラム
0646デフォルトの名無しさん
2006/11/01(水) 13:23:42CGIなら板違いだ
0647デフォルトの名無しさん
2006/11/01(水) 17:57:33完成!
0648デフォルトの名無しさん
2006/11/03(金) 11:41:540649デフォルトの名無しさん
2006/11/03(金) 12:19:20search.cpan.org
0650648
2006/11/03(金) 12:26:300651デフォルトの名無しさん
2006/11/03(金) 13:29:130652デフォルトの名無しさん
2006/11/03(金) 19:53:30これでいいんか?
open my $fh, ">>count.dat";
print $fh "\n";
close $fh;
print "Content-Type: text/plain\n\n";
print -s "count.dat";
0653デフォルトの名無しさん
2006/11/03(金) 21:29:16壊れないけど取りこぼすな。でも「壊れない」条件は満たしてるからいいのか。
軽いカウンタならutimes使って作るといいよ。inodeしか触らない。
0654デフォルトの名無しさん
2006/11/06(月) 20:34:43utimes?
utimeじゃなくて?
ていうかどちらにしろファイルのタイムスタンプ変更するだけの関数だから
カウンタにはできないのでは?
0655デフォルトの名無しさん
2006/11/07(火) 02:45:23タイムスタンプは time_t 型の数値を保存できる場所でな。
0656デフォルトの名無しさん
2006/11/08(水) 14:02:06あ。なるほど。タイムスタンプを無理矢理カウンタとして使うのか。
たしかにできるけど、強引な方法だな・・・。
0657デフォルトの名無しさん
2006/11/08(水) 21:11:300658デフォルトの名無しさん
2006/11/08(水) 22:21:24普通にflockなりなんなりお好きな方法で。
0659デフォルトの名無しさん
2006/11/12(日) 23:53:28$line_amount = @CSV + 1;
$lines = do { local $/; <INTEXT> };
@Aitems = map {(split '\t', $_, 2)[0]} @CSV;
@Bitems = map {(split '\t', $_, 2)[1]} @CSV;
@A = @Aitems;
@B = @Bitems;
chomp (@B);
for ($i = 0; $i < $line_amount; $i++){
$lines =~ s/$A[$i]/$B[$i]/g;
}
print OUT $lines;
-------------
タブ区切りで、検索文字列[TAB]置換文字列
というテキストを作って、それを読み込んで置換するスクリプトなのですが、
一応動作はするものの、置換文字列に $1, $2 など後方参照の変数がそのまま
文字列として出てきてしまいます。これを展開できるようにするには
どうすればいいのでしょうか。
0660デフォルトの名無しさん
2006/11/13(月) 11:16:410661デフォルトの名無しさん
2006/11/13(月) 17:33:14だめでした。
$lines =~ s/$A[$i]/$B[$i]/ge;
置換失敗、($1)という文字列が出ます
s/「(.*?)」/($1)/ge;
こういうのは置換成功(eなしで問題なし)
s/(あ)\1/嗚呼/g;
0662デフォルトの名無しさん
2006/11/14(火) 16:02:150663リクエスタ
2006/11/16(木) 23:38:52↓ 単語が横一列になっているファイルを(ファイル名は例えば sample1.txt )
globe apple captain delicate baseball e-mail family
↓こんな感じに縦列に並べ変えたい
globe
apple
captain
delicate
baseball
family
0664デフォルトの名無しさん
2006/11/16(木) 23:44:170665663
2006/11/17(金) 00:00:18sed 's/ /\n/g' sample1.txt > sample2.txt
でできましたw
0666デフォルトの名無しさん
2006/11/17(金) 12:04:26my $num1 = 3;
my $num2 = 4;
my $moji =tetra;
$data{$moji} = [ $num1, $num2 ];
print("%d",$data{$moji});
perl 実行
%dARRAY(0x85a7c28
何かよくわからない結果になってしまったのですが・・・
0667デフォルトの名無しさん
2006/11/17(金) 12:09:580668デフォルトの名無しさん
2006/12/06(水) 15:03:15新規の書き込みがあった場合、内容をメールで送るスクリプト作って下さい。
0669デフォルトの名無しさん
2006/12/06(水) 16:19:01じゃあ雛型だけ。あとは getbbs() と sendmail() を作れば完成だ。がんばれ。
#!/usr/bin/perl -w
use strict;
my $olddata;
for (;;) {
# 掲示板の内容を取得する。
my $data = getbbs();
if (defined($olddata) && $data ne $olddata) {
# メールを送信する。
sendmail($data);
}
$olddata = $data;
sleep 60 * 10;
}
0670デフォルトの名無しさん
2006/12/06(水) 16:35:420671デフォルトの名無しさん
2006/12/06(水) 17:34:31sub sendmail {
my $data = shift;
open(F, '| /usr/lib/sendmail -t >/dev/null 2>&1') or die;
print F "From: hoge\@fuga.com\n";
print F "To: moga\@mugu.com\n";
print F "MIME-Version: 1.0\n";
print F "Content-Type: text/html\n";
print F "\n";
print F $data;
close(F);
}
但し /usr/lib/sendmail がなければならない。
(つまりこれは主に UNIX 系 OS 向け。Windows なら Cygwin 環境で動くかも)。
0673デフォルトの名無しさん
2006/12/07(木) 14:00:49use LWP::Simple; # これはプログラムの最初に書く。
sub getbbs {
my $url = 'http://...' # これは実際のURLにする。
return get($url);
}
ていうかこんなサブルーチン使わないでそのまま get() やっちゃえばいいかな。
上記のように LWP::Simple を使って串を通したい場合は環境変数の http_proxy
に串のURLをセットしておく ( proxy.hoge.com のポート 8080 の場合は
http_proxy に http://proxy.hoge.com:8080/ をセットしておくか
perl プログラムの中で $ENV{'http_proxy'} = 'http://proxy.hoge.com:8080/';
をやっておく)。
LWP::UserAgent を使って自分で色々する場合は $ua->proxy(...) のような
設定方法も使える。
0674デフォルトの名無しさん
2006/12/07(木) 15:38:14ありがとうございます。
試してみます。
0675デフォルトの名無しさん
2006/12/08(金) 23:46:45組織名 人名 番号(英字3つの後に数字7つ)
という風に並んでるファイルから
番号だけを取り出して
07.番号(英字3つの後に数字7つ)
と書き換えたいのですがお願いします
また、自分でもこういう丸投げはやっぱりよくないとは思うのでもし
「そんなのここ見りゃかいてあるから」みたいなサイトがあれば教えてください
0676デフォルトの名無しさん
2006/12/09(土) 00:06:03各行の最後の10文字の前に「07.」を割り込ませる、って考えでどうだ?
0677デフォルトの名無しさん
2006/12/10(日) 09:25:32printfの間違い。
$data{$moji}は配列へのリファレンスになっているんだから、
$data{$moji}[0]なり$data{$moji}[1]なりにしないとそうなる罠。
0678デフォルトの名無しさん
2006/12/10(日) 21:28:170679デフォルトの名無しさん
2006/12/15(金) 19:41:49perl -ne 'if(/\s+(\w{3}\d{7})\s*$/){print "07.$1\n"}' hoge.txt
0680デフォルトの名無しさん
2006/12/19(火) 23:02:550681デフォルトの名無しさん
2006/12/20(水) 09:56:030682デフォルトの名無しさん
2006/12/21(木) 14:24:02nの値をさまざまに変えて実行時間を計測せよ。
クイックソートの実行時間が理論値O(n log2 n) となるかどうか検証せよ。
0683デフォルトの名無しさん
2006/12/21(木) 14:29:110684デフォルトの名無しさん
2006/12/22(金) 02:32:04便乗でスマンがFORMからのデータの受け取りを
cgi-lib.plに頼らない為のヒントを教えてほしい。
0685デフォルトの名無しさん
2006/12/22(金) 03:05:30意地悪じゃなく調べればいくらでもあると思うんだが…
0686デフォルトの名無しさん
2006/12/22(金) 10:23:070687デフォルトの名無しさん
2006/12/22(金) 10:58:44CGI, 環境変数, あたりでぐぐれ
0688デフォルトの名無しさん
2006/12/22(金) 22:53:42ありがとね。
参考書に「難しいからcgi-lib.pl使え」ってあったから
勝手にその事については載ってないと思った。
まぁ習い始めたばかりだけど、調べたりなかったのは反省してる orz
0689デフォルトの名無しさん
2007/01/11(木) 00:57:44ってのをPerlで作ってくれ。
いや、作ろうとしたんだよ。でも2chのページにアクセスすると403がでてな。
0690デフォルトの名無しさん
2007/01/11(木) 01:27:11オイスター作戦でぐぐれ。
0691デフォルトの名無しさん
2007/01/11(木) 01:41:41それとも不可能ってことかな?
0692デフォルトの名無しさん
2007/01/11(木) 02:08:36youtube内にアップされている動画のタグ情報を引っ張って来れるプログラムをお願いします。
#!/usr/bin/perl -w
use strict;
use LWP::UserAgent;
my $url = shift @ARGV;
my $ua = LWP::UserAgent->new();
$ua->agent('Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1);');
my @tags = &getTag($url);
print join(",", @tags), "\n";
sub getTag {
my ($url) = @_;
my @tags;
my $content = $ua->get($url)->content;
while($content =~ /href=\"\/results\?search_query=(.+?)\"/g){
push(@tags, $1);
}
return(@tags);
}
ここまで行ってるのですが、入力する動画URLの取得を自動化したいんです。
0693デフォルトの名無しさん
2007/01/19(金) 10:09:16IPとホストの表現を教えてください。
0694デフォルトの名無しさん
2007/01/19(金) 10:52:03あるいは
use Regexp::Common; して $RE{URI}{HTTP}
0695デフォルトの名無しさん
2007/01/19(金) 17:08:25ありがとうございます
0696デフォルトの名無しさん
2007/01/20(土) 23:57:02そのパスワードを解析してくれるソフト作ってください。。。
0697デフォルトの名無しさん
2007/01/21(日) 00:17:410698デフォルトの名無しさん
2007/01/21(日) 03:56:05すべてのパスワードを解けるプログラムやスクリプトは絶対にない
0699デフォルトの名無しさん
2007/01/21(日) 06:00:58時間を掛ければ何でも解けるのでは?
但し何万年とか掛かるかも知れないが。
0700デフォルトの名無しさん
2007/01/25(木) 01:00:43微分や積分するプログラムってperlで作れる?
0701デフォルトの名無しさん
2007/01/25(木) 01:51:10マセマティカ並の数式処理能力が欲しければ数学科大学院へでも池
0702デフォルトの名無しさん
2007/02/06(火) 21:56:030703デフォルトの名無しさん
2007/03/16(金) 00:51:22氏名と電話番号を一覧表示するスクリプトを作ってください
0704デフォルトの名無しさん
2007/03/16(金) 16:19:10まず重機ネットのDBから氏名、電話番号の入ったデータをCSV形式で貰ってきます。
その後次のスクリプトを動かしてください。
#!/usr/bin/perl -w
use strict;
system('cat ファイル名');
以上です。
0705デフォルトの名無しさん
2007/03/21(水) 01:14:580706デフォルトの名無しさん
2007/03/21(水) 17:37:510707デフォルトの名無しさん
2007/03/26(月) 17:57:580708デフォルトの名無しさん
2007/04/25(水) 21:54:31@Month = ("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
sub mmm {
return $Month[(shift)-1];
}
@Month を切り替えればいろいろな名前に変換できると思います。
@Month = ("JAN.", "FEB.", ……
@Month = ("睦月", "如月", ……
0709デフォルトの名無しさん
2007/04/26(木) 12:04:470710デフォルトの名無しさん
2007/04/26(木) 16:47:330711デフォルトの名無しさん
2007/04/26(木) 19:12:120712デフォルトの名無しさん
2007/04/27(金) 12:52:11perl -MDate::Manip -e 'print UnixDate(ParseDate("today"),"%B"),"\n";'
0713708
2007/04/27(金) 20:32:47・ハッシュを使うコードよりも軽量・高速。
・「01」とか、ゼロ付きの数字にも対応。
欠点としては:
・逆引きができない。
というわけで、"JAN.."とか"睦月"から数字への変換と、数字から名前への変換、
両方ともできる粋なコードをおながいします。
0714デフォルトの名無しさん
2007/05/03(木) 07:48:33マルチポストをお許し下さい。
perlはまるっきりの初心者です。どなたかお知恵を貸して下さい。
2つのファイル a.txt と b.txt を比較して、条件にあった行を抽出、出力するスクリプトを作りたいのです。
具体的には、
[a.txt]
ID, field1, field2
1, 5.8, 7.3
2, 6.3, 8.2
3, 3.2, 4.1
4, 4.8, 4.0
5, 8.3, 10.2
[b.txt]
ID, field1, field2
1, 6.8, 7.7
3, 4.3, 5.5
4, 5.9, 4.9
というファイルがあったとき、b.txt のIDに数値が存在する行だけを a.txt から抽出して a2.txt として保存したいのです。
[a2.txt]
ID, field1, field2
1, 5.8, 7.3
3, 3.2, 4.1
4, 4.8, 4.0
と言った具合にです。よろしくお願いします。
0715714
2007/05/03(木) 08:04:26質問箱の方で回答を頂きました。マルチポスト失礼しました。
あ、でも他のやり方もあるぞ、というのがあったら教えて下さい。勉強の題材にさせていただきます。
#!/usr/bin/perl
use strict;
use warnings;
open my $a, '<', 'a.txt' or die;
open my $b, '<', 'b.txt' or die;
my %ids = map { $_ => 1 } map { (split /,/)[0] } <$b>;
while (<$a>) {
my $id = (split /,/)[0];
print if $ids{$id};
}
0716デフォルトの名無しさん
2007/05/04(金) 04:45:07$aと$bはmyの対象外の特殊な変数だからサンプルコードだとしても変数として使うのは止めたほうが良い。
0717デフォルトの名無しさん
2007/05/24(木) 22:34:27maildrop によって転送されたメールが画像添付ファイルだった場合に、添付画像だけを除去してくれる perl/php スクリプト
...ってスグに書けますスか?
0718デフォルトの名無しさん
2007/05/27(日) 02:18:190719デフォルトの名無しさん
2007/05/30(水) 00:45:44くれくれで申し訳ないのですが、どうか作っては下さいませんでしょうか...?
0720デフォルトの名無しさん
2007/06/05(火) 21:10:30どのくらい払ってくれる?
0721デフォルトの名無しさん
2007/06/06(水) 17:30:47相場はいかほど?
0722デフォルトの名無しさん
2007/06/06(水) 19:07:260723デフォルトの名無しさん
2007/06/07(木) 09:51:36なんと...見積もりだけでそんなにかかるとわ。
もう少し安くならないの?
0724デフォルトの名無しさん
2007/06/07(木) 16:06:520725デフォルトの名無しさん
2007/11/30(金) 23:14:490726もつ ◆hS9D2mmxqU
2007/12/25(火) 11:20:240727デフォルトの名無しさん
2008/01/10(木) 02:10:560728デフォルトの名無しさん
2008/01/10(木) 10:30:50http://www.amazon.co.jp/gp/seller-account/management/your-account.html
にPerlでアクセスすることが出来ません。
認証とかが必要なのでしょうか・・・・・・・。
0729デフォルトの名無しさん
2008/01/10(木) 18:13:200730anonymous
2008/01/26(土) 14:13:12すべての投稿から、「すでに投稿された文面が再度登場していたら、
その数だけレス番付きで抽出する」
というものはできないでしょうか。
要は何がやりたいのかと言うと、
「スレッドがコピペ投稿だらけ」になっており、
レス削除要請を行いたいのです。
ただ、そのコピペの数が尋常じゃないので抽出が困難なのです。
「文面の95%が一致していたらコピペとみなす」機構が嬉しいです。
0731デフォルトの名無しさん
2008/01/26(土) 19:37:04って話はとりあえず置いといて、検索してたら
String::Trigram とかいうモジュールがヒットした。
この辺使えば作れるのかな?
あとはスパムフィルタ関連の資料か。
URLの有無で判定するタイプもあるらしいから
そういうタイプのフィルタは参考にはならないかも知れないけど。
0732デフォルトの名無しさん
2008/01/26(土) 22:04:23文字の先頭から末尾までが一致していたらアウト、という判定でいいんじゃね。
そういうの欲しいならRubyスレで頼むほうが早いかもよ。
0733デフォルトの名無しさん
2008/01/30(水) 01:12:360734デフォルトの名無しさん
2008/01/30(水) 02:21:14それだけじゃ何をどうすれば良いのか分からんな。
「カレントディレクトリ内にある指定したファイル以外を消去」だとすれば
perl -e"for (glob '*'){$_ eq $ARGV[0] or unlink $_}" ファイル名
で出来るが、サブディレクトリは多分掘らない。
0735733
2008/01/30(水) 05:19:52ありがとう
今はこんな感じで改造しています。
いろいろしないといけないんですが
仮に指定したファイルがカレントディレクトリになかった場合とか
消去を確認するための方法とか ファイルを複数指定したりとか
perl のコマンドに詳しい本って
なにかありますかねー(ネットでも調べていますが)
#!/usr/bin/perl
print "指定ファイルは?";
$file = <STDIN>;
for (glob '*'){$_ eq $ARGV[0] or unlink $_} $file
0736デフォルトの名無しさん
2008/01/30(水) 05:52:040737デフォルトの名無しさん
2008/01/30(水) 05:56:58つーかマテ、その改造コード間違ってるんじゃねーか。
$file が全く関係ないところに書かれてる。
そのコードじゃカレントディレクトリ全部削除されるぞ。
$file = <STDIN>; と書くんだったら、
for (glob '*') { $_ eq $file or unlink $_ } にしなきゃ。
$ARGV[0] はコマンドラインからの引数な。
>734 はファイル名を引数として渡してる。
0739デフォルトの名無しさん
2008/03/25(火) 20:19:490740デフォルトの名無しさん
2008/03/26(水) 12:11:44その「任意のフォルダ」はコマンド引数で指定すれば良いのか?
「任意のフォルダ」に.exeファイルが複数入ってる場合はどうすれば良いんだ?
0741デフォルトの名無しさん
2008/06/09(月) 15:23:34(擬似)子プロセスにてある条件を満たすと(sleep5とかでもなんでもいい)、親プロセスのTKウィジェットに反映する(リストボックスに一行追加とか)するスクリプトください
0742デフォルトの名無しさん
2008/06/17(火) 09:54:41みたいな複数のURLアドレスを一気に開くことのできるスクリプトが欲しいです
0743デフォルトの名無しさん
2008/10/11(土) 18:59:15DBD::CSV使って、
execsql.pl -noheader "SELECT T1.ROW1, T2.ROW3 FROM temp1.txt T1 temp2.txt T2
WHERE T1.ROW1 = T2.ROW2 AND T1.ROW2 = 'abc';" > result.txt
みたいに使えるスクリプト誰か作って。
0744デフォルトの名無しさん
2008/10/11(土) 19:05:12col1 col2 か
SQL初心者な物で
0745デフォルトの名無しさん
2008/10/11(土) 22:08:41明日も perl でエロ画像収集!
エロ画像収集言語 perl 万歳!
0746デフォルトの名無しさん
2008/10/12(日) 13:49:53やってらんねー
結局できたけど
0747デフォルトの名無しさん
2008/10/26(日) 08:58:180748デフォルトの名無しさん
2008/10/26(日) 12:55:130749デフォルトの名無しさん
2008/10/26(日) 13:08:100750デフォルトの名無しさん
2008/10/26(日) 14:31:150751デフォルトの名無しさん
2008/10/29(水) 19:22:48出力例)
$cat test.dat
1
2
3
4
5
6
スクリプト実行後
$cat test.dat
2
1
4
3
6
5
0752デフォルトの名無しさん
2008/10/29(水) 21:16:390753デフォルトの名無しさん
2008/10/30(木) 07:17:55while (<>){
if ( $.%2 != 0 ){ $old = $_ ; next ; }
print $_, $old ;
undef $old ;
}
if ( defined $old ){ print "odd\n", $old ; }
0754デフォルトの名無しさん
2008/11/14(金) 20:58:20そのリストのキーワードを元にgrepみたいな動作をするスクリプト
listファイルの中身
$cat list.txt
aho
baka
test
検索をかけたいファイル(test.txt)の中身
$cat test.txt
aho 1
baka 2
manuke 3
test 4
実行結果
$./grep.pl
aho 1
baka 2
test 4
よろしくお願いします。
0755デフォルトの名無しさん
2008/11/14(金) 21:24:33sub slurp {
local ($/, @ARGV) = (wantarray ? $/ : undef, @_);
return <ARGV>;
}
my $keyword_file = "list.txt";
my $target_file = "test.txt";
my @keywords = slurp($keyword_file);
my $regex = join "|", map { chomp; "\Q$_\E" } @keywords;
$regex = qr/$regex/;
open my $fh, "<", $target_file;
for my $line (<$fh>) {
print $line if $line =~ $regex;
}
close $fh;
0756デフォルトの名無しさん
2008/11/14(金) 22:00:260757デフォルトの名無しさん
2008/11/15(土) 08:37:43ありがとうございました!
0758デフォルトの名無しさん
2008/11/15(土) 09:13:35% perl -lne ' print if $t{ ( split )[0] } ++' list.txt test.txt
ま、区切り文字が全角スペースだと動かんのだがね。全角スペースに拘るなら
% perl -lne ' print if $t{ (/^(\w+)/)[0] } ++' list.txt test.txt
0759デフォルトの名無しさん
2008/11/16(日) 01:29:32Note: including file: d:/projects/game/include\common.h
Note: including file: d:/projects/game/include\product.h
Note: including file: d:/projects/etc/psdk/include\WindowsX.h
Note: including file: d:/projects/etc/psdk/include\windows.h
こういうファイルを
dmain.obj: \
/cygdrive/d/projects/game/include/common.h \
/cygdrive/d/projects/game/include/product.h \
/cygdrive/d/projects/etc/psdk/include/WindowsX.h \
/cygdrive/d/projects/etc/psdk/include/windows.h \
dmain.cpp
こんな風にするスクリプトってどうやるの?
0760デフォルトの名無しさん
2008/11/16(日) 14:36:300761デフォルトの名無しさん
2008/11/16(日) 14:45:05win の人だったらワンライナーはシングルクォートの代りにダブルクォートにすれば良いよ。
0762デフォルトの名無しさん
2008/11/29(土) 21:11:06hogehoge.cgi?入力された言葉
というように表示してくれるスクリプトを作ってほしいのですが
どなたか作ってもらえませんか?
0763デフォルトの名無しさん
2008/12/01(月) 13:11:03print "hogehoge.cgi?入力された言葉";
0764デフォルトの名無しさん
2008/12/01(月) 23:28:02リクといえば、大石 りく。赤穂藩家老大石内蔵助良雄の妻。
そろそろ討ち入りの時期です。
Perlでリクにどうやって応えられるのか、スレが立って足掛け4年。
そろそろ、リクを喜ばしてみれ。
0765デフォルトの名無しさん
2008/12/02(火) 02:36:05猛烈に面白くない
0766デフォルトの名無しさん
2008/12/02(火) 19:00:240767デフォルトの名無しさん
2008/12/14(日) 00:12:000768デフォルトの名無しさん
2009/01/09(金) 01:04:58いつまでたっても彼女ができないのですが、
バレンタインデーまでに(3次元の)彼女ができるスクリプトを作ってもらえませんか
0769デフォルトの名無しさん
2009/01/09(金) 01:18:290770デフォルトの名無しさん
2009/01/13(火) 19:50:17バカだな。バレンタインデーまでにじゃなくてさ
バレンタインデー当日にチョコと一緒に告白される方が絶対いいだろ
0771デフォルトの名無しさん
2009/01/14(水) 01:17:26じゃあそういう感じのスクリプトをお願いします!
できれば、彼女ができる日付を選べる感じで
0772デフォルトの名無しさん
2009/01/14(水) 17:40:36バレンタインデーと言っておいて日付を選べる感じとはいかこれに
0773デフォルトの名無しさん
2009/01/15(木) 00:46:54チョコがもらえるのは2月14日で固定
0774デフォルトの名無しさん
2009/01/15(木) 00:48:19俺が事前に彼女を作りたいのは、
「気合入れて作るから楽しみにしててね」といわれたいからだ
0775デフォルトの名無しさん
2009/01/21(水) 13:09:37$word[$_]のようなのでそれぞれの単語を分けたいのですがなかなか出来ません。
ご教授頂けますと有り難いです。
以下のような感じです。
┌──────┐
│あいうえお │
│かきくけこ │(←textarea)
│さしすせそ │
└──────┘
↓受け渡し↓
あなたの記入した単語は
1つ目[あいうえお]
2つ目[かきくけこ]
3つ目[さしすせそ]
の3つです。
のような感じです。
どなたか宜しくお願い致します。
0776デフォルトの名無しさん
2009/01/21(水) 13:18:17改行でsplitしたら?改行コードに気を付けないといけないけど、それで問題ないと思う。
0777デフォルトの名無しさん
2009/01/21(水) 13:51:07ありがとうございます。
調べてみます。
0778デフォルトの名無しさん
2009/01/21(水) 20:39:36すみません、やっぱりもう少し詳しくお願い出来ませんでしょうか?
0779775
2009/01/21(水) 22:18:12#変数[$word]を受け渡し
@text = split(/\n/, $word);
これを表示させたいのですが、どの様にしたら改行毎に一つずつ表示出来るのでしょうか?
そもそも上ので出来るのでしょうか?
すみませんが宜しくお願い致します。
0780デフォルトの名無しさん
2009/01/21(水) 23:45:59だったら html の textarea の使い方を調べなさいよ。
html すら知らないで perl でwebプログラミングなんて無謀すぎる。
0781775
2009/01/22(木) 00:32:14ですが、@textの改行された分だけ(例えば3回改行されていた場合)並べて表示させる方法がわかりません。
例えば
あいうえお
かきくけこ
さしすせそ
を入力したとしてそれを一つずつ表示させるためにはどうしたら良いのでしょうか?
1行目
<textarea>あいうえお</textarea>
2行目
<textarea>かきくけこ</textarea>
3行目
<textarea>さしすせそ</textarea>
のように一つずつ分けて、書かれた行数分だけループさせて書きたいのですが、教えていただけないでしょうか?
説明不足で申し訳御座いませんが、宜しくお願い致します。
0782デフォルトの名無しさん
2009/01/22(木) 16:34:45for ($i = 0; $i < $#text; $i++) {
print "<textarea>$text[$i]</textarea>";
}
foreach $tt (@text) {
print "<textarea>$tt</textarea>";
}
まず http://www.tohoho-web.com/wwwperl2.htm ここでも読んで
perl で使える命令を全部、頭に叩き込んでおけよ。
0783デフォルトの名無しさん
2009/01/22(木) 16:37:56誤: for ($i = 0; $i < $#text; $i++) ・・・
正: for ($i = 0; $i <= $#text; $i++) ・・・
0784デフォルトの名無しさん
2009/01/22(木) 17:02:14初めに思ってたのと何か違う質問になってるな
<textarea
ああいうえお
かきくけこ
さしすせそ</textarea>
これを1行ずつ表示させたいのではなくて?
use CGI;
my $q = CGI->new;
print $q->header( -type => "text/html");
my $body = $q->param( 'body' );
$body =~ s/\x0D\x0A|\x0D|\x0A/\n/g;
my $li;
for my $word (split "\n", $body) {
$li .= "<li>$word</li>";
}
print <<"HTML"
<form method="post" action="">
<textarea name="body">
a</textarea>
<input type="submit" />
$li</form>
HTML
0785775
2009/01/22(木) 18:05:17ありがとうございます。
URL先と書いていただいた内容を参考にさせていただき、勉強致します。
>>784
ありがとうございます。
自分でも書いていて変だということに今気づきました。
簡単に纏めると、
�@フォームに文章を書いてもらい、受け渡す
�Aそれを受け取り、改行毎に一つずつ変数を持たせて並べる
みたいな感じです。
今も書いていて意味がわかりずらいです。
本当にすみませんでした。
0786775
2009/01/22(木) 23:39:14どうやっても500エラーから逃れられません…
>>782-783様や>>784様のを組み込もうと考えていたのですが、何か根本的に私のは間違っていたみたいです。
申し訳御座いませんが、出来れば一通りのサンプルのようなものを作成していただけないでしょうか?
仕様は何度か書かせていただきましたが、
�@test.cgi(仮)にアクセスするとフォーム表示
�Aフォームに
[あいうえお]
[かきくけこ]
[さしすせそ]
等を複数行記入してsubmitを押す
�Bsubmitを押すと
◆1行目
あいうえお です。
◆2行目
かきくけこ です。
◆3行目
さしすせそ です。
のように表示される。
このようなのをお願いしたいのですが、やはり難しいでしょうか?
どなたか何卒宜しくお願い致します。
0787デフォルトの名無しさん
2009/01/23(金) 15:09:16500エラーのエラー内容ください。
0788775
2009/01/23(金) 15:27:16明らかに自分が書いた部分が掛かっていると思われますので、
修正というよりは1から作り直したいのですが、お手伝いしていただけますでしょうか?
0789デフォルトの名無しさん
2009/01/23(金) 15:28:54エラーログが見れない環境?
>>784コピペするとどうなる?
0790デフォルトの名無しさん
2009/01/23(金) 15:42:16何が不満なのか?
スクリプトをホームページへ設置するやりかたまで
手取り足取り教えろとでも言うのか?
0792デフォルトの名無しさん
2009/01/23(金) 18:31:210793775
2009/01/23(金) 21:07:22Perlのエラー出力
Unrecognized character \241 at tmp.pl line 8.
ソース
0001: use CGI;
0002: my $q = CGI->new;
0003: print $q->header( -type => "text/html");
0004: my $body = $q->param( 'body' );
0005: $body =~ s/\x0D\x0A|\x0D|\x0A/\n/g;
0006: my $li;
0007: for my $word (split "\n", $body) {
0008: $li .= "<li>$word</li>";
0009: }
0010: print <<"HTML"
0011: <form method="post" action="">
0012: <textarea name="body">
0013: a</textarea>
0014: <input type="submit" />
0015: $li</form>
0016: HTML
8行目の何が問題なのでしょうか?
0794デフォルトの名無しさん
2009/01/23(金) 22:43:07というオチではないだろうな。
0795775
2009/01/23(金) 22:59:080796775
2009/01/23(金) 23:04:46でエラーが出ました。
0797デフォルトの名無しさん
2009/01/24(土) 00:05:340798デフォルトの名無しさん
2009/01/24(土) 00:08:32これだろ?
Can't find string terminator "HTML" anywhere before EOF at m.pl line 10.
0799775
2009/01/24(土) 00:25:31はいそれです。
0800デフォルトの名無しさん
2009/01/24(土) 05:21:38というか、>>793は全角スペースのエラーだよね。>>794は言ってることあってたと思うんだけど会話になってないな。
0801775
2009/01/24(土) 06:00:43確かにそうでした。
全角削除しても500出てたので勘違いしていました。すみませんでした。
最後に改行を入れた所、チェッカーでのエラーは無くなりましたが、未だにアクセスすると500になります。
何か原因などあるのでしょうか?
0802デフォルトの名無しさん
2009/01/24(土) 08:04:02ここまで書かないとだめか?
0803デフォルトの名無しさん
2009/01/24(土) 08:37:46とにかく、ひどい
0804775
2009/01/24(土) 10:24:360805デフォルトの名無しさん
2009/01/24(土) 11:03:48スクリプトの一行目に、どのプログラムで解釈させるのかを書いておく。
その行をシェバング(sharp bang/shell bang)行と呼ぶ。
その行が欠落している。
詳しくは、お使いのサーバの管理者にお尋ねください。
0806デフォルトの名無しさん
2009/01/24(土) 11:40:030807デフォルトの名無しさん
2009/01/24(土) 11:40:400808デフォルトの名無しさん
2009/01/24(土) 12:19:41ファイル名はtext.cgi。実行権限を付ける。
=====ここからコピー=====
#!/usr/bin/perl -T
use strict;;
use warnings;
use CGI;
my $q = CGI->new;
print $q->header( -type => "text/html");
my $body = $q->param( 'body' );
$body =~ s/\x0D\x0A|\x0D|\x0A/\n/g;
my $li;
for my $word (split "\n", $body) {
$li .= "<li>$word</li>";
}
print <<"HTML"
<form method="post" action="">
<textarea name="body">
</textarea>
<input type="submit" />
$li</form>
HTML
__END__
=====ここまでコピー=====
0809デフォルトの名無しさん
2009/01/24(土) 12:26:39つーか、クレクレだしな。
0810775
2009/01/24(土) 12:31:09説明ありがとうございます。
そのような事すら知りませんでした。
勉強になります。
ありがとうございました。
>>806>>807
申し訳御座いませんでした。
リアルで話し下手なのがこのような場でも御迷惑をおかけしたことを大変恥じております。
これからはperl以前にそのような事にも気をつけたいと思います。
本当に申し訳御座いませんでした。
>>808
最後までご丁寧にありがとうございます。
コピーして使わせていただきます。
本当にありがとうございました。
このスレに来るのはこれで最後にします。
御迷惑ばかりおかけして本当に申し訳御座いませんでした。
0811デフォルトの名無しさん
2009/01/24(土) 12:46:060812デフォルトの名無しさん
2009/01/25(日) 14:23:190813デフォルトの名無しさん
2009/01/25(日) 15:34:590814デフォルトの名無しさん
2009/01/25(日) 15:56:540815デフォルトの名無しさん
2009/01/25(日) 22:22:02$str =~ s/バレンタインというもの//g;
0816デフォルトの名無しさん
2009/01/26(月) 02:52:280817デフォルトの名無しさん
2009/01/27(火) 14:39:230818デフォルトの名無しさん
2009/01/30(金) 10:24:51ナイ
0819デフォルトの名無しさん
2009/01/30(金) 21:01:09うむ、だが不能犯だな。
0820デフォルトの名無しさん
2009/02/01(日) 13:37:250821デフォルトの名無しさん
2009/02/02(月) 01:40:100822デフォルトの名無しさん
2009/02/04(水) 22:36:00マイリンク
・用途
リンクスクリプトで個人個人が好きなサイトをマイリンクに登録し、登録すると登録したサイトをマイリンクで確認出来る
・仕様
�@個体識別情報(携帯端末は個体識別番号、パソコンはIPアドレス)で判断し、それぞれの端末毎にマイリンクを表示させる
�Aマイリンクページでマイリンクしたサイトの削除が可能(個人個人で)
�B追加はリンク表示の横の[追加]リンクを押すことで追加
�Cマイリンクページでのマイリンクの表示数は10件程度で、超えた場合は次のページに表示
こんな感じのをお願い出来ませんでしょうか?
使っているリンク集スクリプトはKENT WEBさんのコスモナビです。
どなたか宜しくお願いします。
0823デフォルトの名無しさん
2009/02/04(水) 23:31:000824822
2009/02/07(土) 11:32:30自分が今サーバーに設置して使っているリンク集に、ユーザーが使えるマイリンク機能を追加したいのです。
3000サイトくらい登録しているので、利用者からマイリンク的なものを使えるようにしてくれと要望がありましたので此処にお願いに参りました。
822に追加でマイリンクページでカテゴリ分け(カテゴリ作成、編集、削除)出来たら最高です。
どなたか何卒、宜しくお願い致します。
0825デフォルトの名無しさん
2009/02/08(日) 17:38:530826デフォルトの名無しさん
2009/02/10(火) 17:48:330827デフォルトの名無しさん
2009/02/10(火) 18:10:370828デフォルトの名無しさん
2009/02/13(金) 19:51:280829デフォルトの名無しさん
2009/02/13(金) 20:43:55my ($s, $d) = @_;
if ($d == 25) {
print $s, "\n";
}
else {
f($s.1, $d+1);
f($s.2, $d+1);
f($s.3, $d+1);
}
}
f('', 0);
0830デフォルトの名無しさん
2009/02/13(金) 23:04:58ありがとうありがとうありがとう!
0831デフォルトの名無しさん
2009/02/15(日) 00:43:27よくある[○人オンライン中]的なやつです。
時間は60秒くらいまでをオンライン中扱いにして、携帯電話も正確にカウントされるようにお願いします!
0832デフォルトの名無しさん
2009/02/15(日) 03:51:350833デフォルトの名無しさん
2009/02/15(日) 06:10:140834デフォルトの名無しさん
2009/02/15(日) 06:52:16ちなみに俺のサイトなんて月10人くるかわからない程だぜ
0835デフォルトの名無しさん
2009/02/15(日) 07:18:580836デフォルトの名無しさん
2009/02/16(月) 18:36:46リンクの保存はリンクIDで行うようにしていただけると助かります。
0837デフォルトの名無しさん
2009/02/17(火) 16:46:43この中にあると思うから好きなのを選べ
http://www.google.co.jp/search?hl=ja&q=%E3%81%91%E3%82%93%E3%81%A8%E3%81%86%E3%81%87%E3%81%B6&lr=
0838デフォルトの名無しさん
2009/02/17(火) 17:12:31残念ながらありませんでした。
0839831
2009/02/22(日) 15:39:290840デフォルトの名無しさん
2009/02/25(水) 23:47:120841デフォルトの名無しさん
2009/03/27(金) 18:34:39foreach (@list) {
if ($_ eq START) {
}
}
0842デフォルトの名無しさん
2009/03/27(金) 18:45:57関数名でソートして出力するスクリプトを作ってください。
例:
bool test() {
return 1;
}
int main() {
{ コメント }
return 0;
}
結果:
int main() {
{ コメント }
return 0;
}
bool test() {
return 1;
}
よろしくお願いします。
0843デフォルトの名無しさん
2009/03/30(月) 08:11:51以下のスクリプトを hoge.pl として保存
perl hoge.pl hoge.c
====
my %hash ;
my $name ;
while (<>){
if ( /^\S+\s+(\S+)\s*[(].*?{/ ){ $name = $1 ;}
$hash{$name} .= $_ ;
}
printf "%s\n", $hash{$_} for sort keys %hash ;
# インデントは全角空白なので、注意。
====
後は自分で工夫して下さい。
0844デフォルトの名無しさん
2009/03/30(月) 12:03:190845デフォルトの名無しさん
2009/03/30(月) 12:18:04自分でプリプロセッサつくるぐらい面倒くさいだろうな。
0846るん(pafe) ◆mB5uKa4bvY
2009/04/02(木) 01:35:18このページを参考にしますと
http://www.futomi.com/lecture/signal/alrm.html
の最初のスクリプト例
$SIG{ALRM} = \&timeout; # ALRM シグナルをキャッチした場合の処理を定義
alarm 10; # タイマーを 10 秒にセット
・・・
・・・
#タイマーで時間を監視したい処理
・・・
・・・
alarm 0; # タイマーをキャンセル
sub timeout {
#タイムアウトした際に実行する処理
}
上記例において、
#タイマーで時間を監視したい処理
sleep(100);
#タイムアウトした際に実行する処理
print 'timeout';
とすると、タイムアウトが一旦発生するとタイマー監視していた処理(sleep)の途中で「timeout」が一回表示されてプログラムが終わってしまうわけですが、
終わらせずに監視を続け、10秒おきにシグナルが発生するようにしたいのですがどうすればいいのでしょうか?
つまりsleep100秒している間に、timeoutという文字を10秒おきに一回ずつ計10個printするようにしたいのですが。
そういうスクリプトを作って見せてもらえないでしょうか。
0847デフォルトの名無しさん
2009/04/02(木) 02:06:30を
system "sleep 100";
にしなさい
0848るん(pafe) ◆mB5uKa4bvY
2009/04/02(木) 05:14:44だめでした。やっぱりtimeoutの文字は一発で終わりです。sleepは確かに100秒続くのですが。
ちなみにsystem関数で置き換えられない処理を監視する場合も可能なようにスクリプト例をお願いします。
0849デフォルトの名無しさん
2009/04/02(木) 06:11:52sub timeout の中に
$SIG{ALRM} = \&timeout; # ALRM シグナルをキャッチした場合の処理を定義
alarm 10; # タイマーを 10 秒にセット
の部分をもう1回書いたらあかんの?
0850るん(pafe) ◆mB5uKa4bvY
2009/04/02(木) 15:25:20$SIG{ALRM} = \&timeout; # ALRM シグナルをキャッチした場合の処理を定義
alarm 1; # タイマーを 1 秒にセット
#タイマーで時間を監視したい処理
system "sleep 10";
alarm 0; # タイマーをキャンセル
sub timeout {
#タイムアウトした際に実行する処理
print 'timeout';
alarm 1; # タイマーを 1 秒にセット
}
こうもしてみたけどやっぱりダメでした。やはりtimeoutは一発出ただけですたい。
0851デフォルトの名無しさん
2009/04/02(木) 16:03:29alarm 1;
sleep 10;
alarm 0;
sub timeout {
print "timeout\n";
$SIG{ALRM} = \&timeout;
alarm 1;
}
0852デフォルトの名無しさん
2009/04/02(木) 16:39:59コメントを送信したら自動的にhtmlに上書きされてページがリロードされるような
プログラムはどのように書けば良いですか?
考え方を教えていただければ自分で勉強しながら作ってみようと思いますので
どうかよろしくお願いします。
0853デフォルトの名無しさん
2009/04/02(木) 16:42:040854るん(pafe) ◆mB5uKa4bvY
2009/04/02(木) 18:35:31>>849
>>851
すみませんでした!!
どうしようもないボケミスをしてたようです。
subルーチンの中にそのまま
sub timeout {
#タイムアウトした際に実行する処理
}
を書き込んでいたため、どうやっても一回しか出なかったようです。
凡ミスで失礼しました。
確かに10発出ます。
こんな間違いしててもperlは走るところが恐ろしいね(^^;
一緒に考えてくれてありがとう! ミスが見つかったので助かりました。
0855デフォルトの名無しさん
2009/04/02(木) 19:12:36自分はこんなの使ってるってのでもいいんで、教えてください。
0856デフォルトの名無しさん
2009/04/02(木) 20:01:05【Perl】ファイルロック(排他処理)について語ろう
http://pc11.2ch.net/test/read.cgi/php/1024795138/
0857デフォルトの名無しさん
2009/06/07(日) 03:43:11例えばyahooから送られてきてるものをyahooに通報し、
通報できなかったものはログに落とすスクリプトをお願いします
0858デフォルトの名無しさん
2009/06/09(火) 00:45:32yahooの通報ってのがどういう処理なのかわかんね。modifiedとか見るべきかなと思ったけどとりあえず。
=====config.yaml
---
gmail:
user: username
pass: password
=====本体
use LWP::UserAgent;
use XML::Atom::Feed;
use YAML::XS;
my $yaml = YAML::XS::LoadFile('config.yaml');
my $gmail_auth = $yaml->{gmail};
warn YAML::XS::Dump $gmail_auth;
my $url = "https://mail.google.com/mail/feed/atom/spam";
my $ua = LWP::UserAgent->new;
$ua->credentials("mail.google.com:443", "New mail feed", $gmail_auth->{user}, $gmail_auth->{pass});
my $res = $ua->get($url);
my $content = $res->content;
warn $content;
my $atom = XML::Atom::Feed->new(\$content);
my @yahoo_addresses;
for my $entry ($atom->entries) {
for my $author ($entry->author) {
my $email = $author->email;
push @yahoo_addresses, $1 if $email =~ m{ (^.+\@yahoo\.(?:co\.jp|com)$) }xms;
}
}
for my $yahoo_address (@yahoo_addresses) {
warn $yahoo_address if ! report($yahoo_address); # 通報できなかったら
}
0859デフォルトの名無しさん
2009/06/09(火) 23:44:49なので、IDからIPは不可能でも、
IDから次の日のIDを作成することは可能ではないでしょうか?
思いついて検索してみても引っかからないので、まだ誰も作ったことがないのかも?
pelr勉強中で、まだ組めない(少し読める程度)ので、ご教授願います。
0860デフォルトの名無しさん
2009/06/10(水) 00:33:08なぜそう思う?
>IPの下3桁と日付で生成されている
ということはだな、IPの下3桁と次の日の日付がわからないと無理だろ?
0861デフォルトの名無しさん
2009/06/10(水) 01:15:28IPは変わってないという前提で、
日付とIDを入れれば算出できるのではないかと…。
0862デフォルトの名無しさん
2009/06/10(水) 06:32:30あほ?
0863デフォルトの名無しさん
2009/06/10(水) 06:34:39ということは、ごはんにウンコかけて食えばカレーを作ることも出来る!
0864デフォルトの名無しさん
2009/06/10(水) 08:53:55何が言いたいのかわからないけど、>>859の言ってるアルゴリズムが正しければ可能だろ
IPの下3桁って254個しかないんだからIDを254個作ればどのIPかわかる。
で、そのIPと次の日を使ってID作ればいいだけでしょ。
0865デフォルトの名無しさん
2009/06/10(水) 10:12:13暗号数学について語ろう。ROUND 4
http://science6.2ch.net/test/read.cgi/math/1243318266/
0866デフォルトの名無しさん
2009/06/10(水) 11:24:37てかID逆変換 でぐぐるとIDからIP算出してるプログラムが出てくるが、
あれじゃあかんのかい。
0867デフォルトの名無しさん
2009/06/11(木) 11:01:36不可逆的な演算でIP+日付→IDと作っているなら難しいんじゃないのか?
ひろゆきが「秘密の演算」を途中に挟み込んでいる可能性もあるし。
0868デフォルトの名無しさん
2009/06/11(木) 11:46:40そこ2001年だからかしらんが、listが古くてダメだった。
ttp://saki.2ch.net/entrance/kako/998/998295821.html
ttp://blue.ribbon.to/~testsan/
ここにリスト作成プログラムと、それを検索するperlプログラムがあるが、
確かにIDリストから検索するだけなら簡単だが、
今やってみたけども、IDリストに無いIDが多い。ゆえにIPは出ない。
これでIPが(下3桁だけでも)出せれば、次の日の書き込みのIDが分からなくても、
同じ人の書き込みを追尾するのはできなくはないな(完璧とはいわんけど)。
0869デフォルトの名無しさん
2009/06/11(木) 11:47:46それを考えるのが楽しいんじゃないかww
0870デフォルトの名無しさん
2009/06/11(木) 12:44:17「秘密の演算」にMD5使われてたら確実に無理だな
0871デフォルトの名無しさん
2009/06/11(木) 12:58:40サーバごとにID値が変わるのは、urandomの値に左右されるため。
最新のはシラネ。
0872デフォルトの名無しさん
2009/06/12(金) 08:13:59ID逆変換はネタアプリだし
0873デフォルトの名無しさん
2009/06/12(金) 08:16:350874デフォルトの名無しさん
2009/06/13(土) 06:01:55個人のデータ(苗字、名前、性別、住所、部署等)が載ったテキストを処理し、
特定の苗字で、性別が男の場合はその人のデータをすべて削除し、
それ以外はすべて出力するというスクリプトが欲しいです。
例えば、
鈴木 一郎 男 東京都大田区〜、営業部
鈴木 花子 女 千葉県浦安市〜、総務部
といったデータが存在した場合、鈴木花子はテキストに残るが、
鈴木一郎に関する全データは削除される、という処理です。
他の苗字の人のデータは性別関係なくすべて出力されますが、鈴木という苗字で男性のデータはすべて削除します。
使用環境はUNIXです。よろしくお願いします。
0875デフォルトの名無しさん
2009/06/13(土) 06:52:34まあ何つうか、データの形式とかが重要だったり、
あと出力をどのような形式でするのかということに依存するんじゃないかな
固定長なのか区切り文字データなのかでも違うし
出力、入力ファイルハンドルが存在すると仮定して、出力はこんな感じだろ
while(<$IN>){
next if (/\A鈴木/&&/\s女\s/);
print $out $_;
}
(女、一文字の姓、名が存在しないと仮定して)
0876デフォルトの名無しさん
2009/06/13(土) 12:39:32花子がリストラされてしまいます
0877デフォルトの名無しさん
2009/06/13(土) 17:10:21鈴木 かつ 男
以外を出力
while(<>){
next if (/鈴木/ and /男/)
}
0878デフォルトの名無しさん
2009/06/13(土) 18:56:33とかきたらダメだね。カラムが空白で区切られれてるんだったら、splitしたほうが安全かと
0879デフォルトの名無しさん
2009/06/13(土) 19:20:44皆様、ありがとうございます。
>>878
たしかに他の情報に男が含まれていたら、それも削除されてしまいますね。。。
カラムは空白で区切られています。splitを使う場合はどうすれば良いのでしょうか?
0880デフォルトの名無しさん
2009/06/13(土) 21:32:51@fields = split(' ');
next if ($fields[0]=~/鈴木/ && $fields[2]=~/男/);
join(' ',@fields);
print;
}
0881デフォルトの名無しさん
2009/06/13(土) 21:37:44個人のデータ以外にも、これは何々のテキストです等のデータが載っているのですが、
これらもそのまま出力されるようにしたいです。
申し訳ありませんでした。
0882デフォルトの名無しさん
2009/06/13(土) 21:58:46データ構造がどうなってるか質問者がいわねーんだもん
while(<>){
next if (/^鈴木/ and /\s男\s/)
}
こんなんでいいだろ
細かい点は自分の好きに調整されたし
0883デフォルトの名無しさん
2009/06/16(火) 23:46:53仕様は外部のテキストファイルを読み込み、そこに書いてある名前のディレクトリをmkdirで作ります。
例えば、以下のような外部テキストが存在した場合、mkdir eva01, mkdir eva02というコマンドを
Perlが自動的にやってくれて、スクリプトを実行させた後に確認するとeva01〜eva99のディレクトリが
できている、といった状態です。
分かりにくいですがよろしくお願いします。環境はUNIXです。
外部テキストファイルの中身
eva01
eva02
eva03
(略)
eva99
0884デフォルトの名無しさん
2009/06/17(水) 00:42:39open LIST, "dirlist.txt";
map {mkdir $_} <LIST>;
0885デフォルトの名無しさん
2009/06/17(水) 00:51:44use File::Path;
my $fh = new IO::File("$ARGV[0]") or die $!;
mkpath $_ while <$fh>;
0886デフォルトの名無しさん
2009/06/18(木) 03:27:00大量の画像ファイル(5〜10万枚)を、指定した特定のディレクトリに
自動的に分配されるプログラムのスクリプトが欲しいのですが、
お願いできないでしょうか?
以下のようなこのファイルはこのディレクトリに入れるという別のテキストが存在します。
--画像とディレクトリマッチング--
toyotaca01.jpg TOYOTA_01
toyotaca02.jpg TOYOTA_01
toyotaca03.jpg TOYOTA_01
hondaciv01a.jpg HONDA_CIV01
hondaciv01b.jpg HONDA_CIV01
hondaciv01c.jpg HONDA_CIV01
hondaciv02.jpg HONDA_CIV02
以下、ずっと続く
左がファイル名で右がディレクトリ名です。
よろしくお願いします。
0887デフォルトの名無しさん
2009/06/18(木) 04:17:33open IN, "list.txt";
while(<IN>){
chomp;
my($f, $d) = split / /, $_, 2;
die "File exists: $d/$f\n" if -e "$d/$f";
rename($f, "$d/$f") or die "Error: rename($f, \"$d/$f\")\n";
}
0888デフォルトの名無しさん
2009/06/19(金) 00:34:02情報が少ないな
・そのディレクトリは既に作ってるのか?
・今現在画像ファイルと同じ階層にディレクトリ作るの?
0889デフォルトの名無しさん
2009/06/19(金) 00:37:48ディレクトリは作ってます。
画像ファイルは別のディレクトリにあります。
0890デフォルトの名無しさん
2009/06/19(金) 00:58:26>>887じゃ役に立たん
0891デフォルトの名無しさん
2009/06/22(月) 04:15:19レスが遅れて申し訳ありません。
画像と画像を入れるディレクトリを同じ階層に持ってきました。
これなら大丈夫なのでしょうか?
0892デフォルトの名無しさん
2009/07/14(火) 22:00:10よろしいでしょうか?例えば、以下のようなテキストファイル、1.txtと2.txtファイルがあった場合、
結合して、3.txtのように出力させるようにしたいのです。しかし、1.txtと2txtでは記載されている情報が違うので、
2.txtから1.txtに載っていない氏名の人は排除して、1.txtベースで結合して出力したいです。
1.txt
山田太郎 19681215 男 営業部
宮脇俊夫 19830527 男 総務部
前田恵子 19870715 女 総務部
2.txt
山田太郎 丸ノ内大学
宮脇俊夫 日比谷大学
吉中浩二 半蔵門高校
前田恵子 千代田大学
常盤光一 大江戸大学
3.txt
山田太郎 丸ノ内大学 19681215 男 営業部
宮脇俊夫 日比谷大学 19830527 男 総務部
前田恵子 千代田大学 19870715 女 総務部
よろしくお願いします。
0893デフォルトの名無しさん
2009/07/15(水) 00:53:53use strict;
use warnings;
use List::Util qw(first);
my ($txt1, $txt2, $txt3) = @ARGV;
open my $fh1, $txt1 or die $!;
my @data1 = map { chomp; my @c = split / /; $_ = \@c } <$fh1>;
close $fh1;
open my $fh2, $txt2 or die $!;
my @data2 = map { chomp; my @c = split / /; $_ = \@c } <$fh2>;
close $fh2;
open my $fh3, '>', $txt3 or die $!;
foreach my $d1 (@data1) {
if (my $e = first { $_->[0] eq $d1->[0] } @data2) {
printf $fh3 "%s %s %s %s %s\n", $d1->[0], $e->[1], $d1->[1], $d1->[2], $d1->[3]
}
}
close $fh3;
0894デフォルトの名無しさん
2009/07/15(水) 22:53:45ありがとうございます
0895デフォルトの名無しさん
2009/07/18(土) 20:43:13この掲示板CGIを完成させてくれませんか。
途中までがんばってみたのですが、ギブアップします。誰かお願い。
0896デフォルトの名無しさん
2009/07/21(火) 04:12:48全然何がしたいのか伝わってこない
元々配布されてる時点で完成品だったんじゃないのか?
どこを触ってどこまで進んだ?
そもそも何を完成させたいのか?
ということを書いてそういうスレに丸投げればいいと思うよ
0897デフォルトの名無しさん
2009/08/10(月) 22:45:180898デフォルトの名無しさん
2009/08/20(木) 15:52:09そのファイルの8行目にある数値と、ファイル名を一括抽出して、1つのテキストファイルに出力をしたいです。
このようなスクリプトをお願いできないでしょうか?
例えば、ファイル名が uekibachi0589.datで、8行目にある数値が 780 だとしたら、
出力されたテキストファイルの中には、以下のように出力されます。
uekibachi0589.dat 780
どうかよろしくお願いします。
0899デフォルトの名無しさん
2009/08/20(木) 16:17:360900デフォルトの名無しさん
2009/08/20(木) 16:28:11のまちがいorz
0901デフォルトの名無しさん
2009/08/20(木) 18:34:02open$fh,$f;
for($i=0;$l=<$fh>;$i++){
if($i==$ARGV[1]){
$f=~s/^.+?([^\/]+)$/$1/;
print"$f $l";
}
}
close$fh;
}
0902デフォルトの名無しさん
2009/08/20(木) 21:17:23はじめて知った。
しかし汚ったないコードだな。
0903デフォルトの名無しさん
2009/08/20(木) 21:20:22> はじめて知った。
perlのインタプリタはめちゃくちゃなコードで
できるだけ解釈するポリシーがあるって
どこかで書いてあった気がする
> しかし汚ったないコードだな。
ワンライナーなら使い捨てだし
このくらいで十分でしょ。。
0904デフォルトの名無しさん
2009/08/20(木) 21:20:38キレイで優雅でエレガントなお手本コードを見せてくれ
0905デフォルトの名無しさん
2009/08/20(木) 21:22:39orz
0906デフォルトの名無しさん
2009/08/20(木) 21:28:56もしかしたら、
use strict;
use warnings;
my
あたりが使ってあって、
レイアウトとかインデントとかの体裁が整ってたら
きれいっていうことになるのかもしれない。
でも、この程度のことならワンライナーで済ませるよね。
もっとやることが増えてきたらそのとき考えるし、
ワンライナーでいちいちuse strictとかはしないよ。。
0907デフォルトの名無しさん
2009/08/20(木) 21:34:110908デフォルトの名無しさん
2009/08/20(木) 21:34:430909デフォルトの名無しさん
2009/08/20(木) 21:38:19しかし読みにくいコードだな
0910デフォルトの名無しさん
2009/08/20(木) 21:41:19>>900を書いたときには>>901はあたまになくて、
{を書くときに{}とペアで書いたりすることはするけど
前から順に処理の過程を書いていくようにすれば
それほど書きにくくないと思うよ。
0911デフォルトの名無しさん
2009/08/21(金) 03:48:02ほらよ。簡単じゃん。これくらい書けないのかね、今どきの中学生は。
foreach $f (glob "$ARGV[0]/*") {
open $fh, $f;
for ($i = 0; $l = <$fh>; $i++) {
if ($i == $ARGV[1]) {
$f =~ s/^.+?([^\/]+)$/$1/;
print "$f $l";
}
}
close $fh;
}
0912デフォルトの名無しさん
2009/08/21(金) 08:54:29とかで良いんじゃ…
0913デフォルトの名無しさん
2009/08/22(土) 00:16:40perl -ne ' print "$ARGV $_" if $. == 8; $. = 0 if eof ' *txt
に訂正
0914デフォルトの名無しさん
2009/08/22(土) 12:11:44これをforeachみたいに一回のループで終わらせるんじゃなくて、
123451234512345
と無限ループでずっと表示させたい。
シンプルでうまい書き方お願いします。
0915デフォルトの名無しさん
2009/08/22(土) 13:07:06とか
for ( ; ; )
を使えばいいよ。
そんなのプログラミングの初歩の初歩。perl以前の問題。
0916デフォルトの名無しさん
2009/08/22(土) 13:18:03foreach(@tmp){
print "$_";
}
}
は考えたんだけどループ2個が気に食わなくてね。でも妥当か。
0917デフォルトの名無しさん
2009/08/22(土) 14:04:16print @tmp while 1;
最近は学校で中カッコを多用するプログラミング言語しか教えてないのか、
変に中カッコに毒されて頭が固くなってるヤツばっかりだな
0918デフォルトの名無しさん
2009/08/22(土) 14:05:480919デフォルトの名無しさん
2009/08/22(土) 14:30:17頭固いんじゃねw
0920デフォルトの名無しさん
2009/08/22(土) 17:06:240921デフォルトの名無しさん
2009/08/23(日) 05:04:52JIS Z 8201-1981 においても「小括弧」・「中括弧」・「大括弧」という名称は廃止され、
現在は「丸括弧」・「角括弧」・「波括弧」と表記されている。
0922デフォルトの名無しさん
2009/08/23(日) 05:06:22http://cheese.2ch.net/math/kako/981/981434050.html
0923デフォルトの名無しさん
2009/08/23(日) 05:08:00http://www.amazon.co.jp/dp/4063528146/
0924デフォルトの名無しさん
2009/08/23(日) 08:55:57そりゃそうだろう。
今時、廃れたPerlとか変態しか使わんわ。
0925デフォルトの名無しさん
2009/09/03(木) 00:54:14ある時間で起動ようにして2つのファイルの差分をとると、どうしても若干タイムラグができてしまって、
そのタイムラグの間にファイルを置かれると、もう比較しようがなくなってしまう。
そこで、起動時間より後におかれたファイルは除外したファイルリストを作成して、そのファイルリストの差分を確認するようにしたいです。
このようなプログラムはできますか?
0926925
2009/09/03(木) 00:56:43タイムスタンプは使えません。
0927デフォルトの名無しさん
2009/09/03(木) 10:17:06日本語がいまいちわからんな。
二つのディレクトリを比較するなら
一番確実なのはdiffを使うこと。
サーバが分かれてるなら、NFSをつかえばいい。
あるいはrsyncを使う。これならNFSは不要。
もっといいのはSubversion。
どうしてもPerlを使いたいなら<*>かreaddirを配列に代入すれば、
その瞬間のデイレクトリリストがとれる。
0928デフォルトの名無しさん
2009/09/08(火) 01:51:59それぞれ別の挙動をとる関数は作れますか
0929デフォルトの名無しさん
2009/09/08(火) 01:53:20向こうへ行ってみます、スルーしてください
0930デフォルトの名無しさん
2009/09/12(土) 01:43:26get-flash-videos -Google Code
http://code.google.com/p/get-flash-videos/
数々の動画サイトからコマンドラインで動画を取得するツールなんですが、
動画のタイトルに日本語が含まれていると、ファイル名が文字化けしてしまうようです。
http://homepage2.nifty.com/ttoyoshima/Perl/Intro.htm
上記サイトやjcode.plも試したが上手く行かず…マイナーなツールなせいか改善策をググってもな無い…
環境はWindows VistaにActive Perl5.8.9.826です。
お助け頂ければ有難いです。
0931デフォルトの名無しさん
2009/09/12(土) 05:56:56WinXP / cmd.exe / ActivePerl 5.10.1 (build1006) でなら
次レスのパッチで一応通る。つか改造依頼はこっちだな。
【 スクリプト改造依頼スレ】(丸投げ) part7再々
http://pc11.2ch.net/test/read.cgi/php/1222645553/
★三 【 スクリプト改造工房 PART 9 】 ★三
http://pc11.2ch.net/test/read.cgi/php/1143834740/
金出すから改造してよvol.3
http://pc11.2ch.net/test/read.cgi/php/1162147035/
0932デフォルトの名無しさん
2009/09/12(土) 05:57:38+++ get_flash_videos-1.15 Sat Sep 12 05:37:46 2009
@@ -154,5 +154,5 @@
$title =~ s/\s+/_/g;
- $title =~ s/[^\w\-,()&]/_/g;
+ $title =~ tr!\\/:*?"<>|!_!;
$title =~ s/^_+|_+$//g; # underscores at the start and end look bad
@@ -160,5 +160,7 @@
return get_video_filename($type) unless $title;
- return "$title.$type";
+ $title = Encode::encode(utf8 => "$title.$type");
+ Encode::from_to($title, utf8 => 'cp932');
+ return $title;
}
@@ -3996,6 +3998,6 @@
}
-binmode STDERR, ":utf8";
-binmode STDOUT, ":utf8";
+binmode STDERR;
+binmode STDOUT;
my (@urls) = @ARGV;
0934デフォルトの名無しさん
2009/10/06(火) 23:24:49作成していますが、そのCGIが発行するCookieを取得して、リクエストヘッダに含める必要があります。
どうやったら良いんでしょうか?↓今のコードの抜粋です
my $sendBuf=<<"EOM";
POST ${path} HTTP/1.1
(略
Cookie: #取得したcookie
(略
#リクエスト
EOM
print $sendBuf;
my $sock = &C2S($saddr) || return undef;
print $sock $sendBuf;
close($sock);
return 1;
}
sub C2S{
my @zz = @_;
my $CONT;
socket($CONT,PF_INET,SOCK_STREAM,0) || return undef;
my $xx = inet_aton($zz[0]) || return undef;
my $yy = pack_sockaddr_in($zz[1]?$zz[1]:80,$xx) || return undef;
connect($CONT,$yy) || return undef;
autoflush $CONT (1);
return $CONT;
}
0935デフォルトの名無しさん
2009/10/07(水) 08:10:47質問文読んだ後にコード見て、一瞬違う言語のスレだったかと思って混乱した
てっきりLWP::UserAgentとかの話かと思ったわ
> そのCGIが発行するCookieを取得して、リクエストヘッダに含める必要があります。
これどういうこと?すでにCookieの値をファイルか何かでもってるの?
それとも一度CGIにアクセスしてCookieを取得した後に、もう一回POSTしたいってこと?
0936デフォルトの名無しさん
2009/10/07(水) 09:03:18CGI.pmつかえば?
use CGI qw/:all/;
$cookie=cookie "中野美奈子";
print header(-cookie=>$cookie,-type=>'text/html');
略
0937デフォルトの名無しさん
2009/10/07(水) 09:11:11> > そのCGIが発行するCookieを取得して、リクエストヘッダに含める必要があります。
> これどういうこと?
ローカルスクリプト → リモートCGI(フォームあり、クッキー発行)へアクセス
ローカルスクリプト ← クッキー
ローカルスクリプト → クッキーを返しつつ、POST
自動書き込み完了
こんな感じ?
0938935
2009/10/07(水) 11:06:12それでいいなら単純なのだとこんな感じかな
use strict;
use warnings;
use LWP::UserAgent;
use HTTP::Cookies;
my $url = 'http://www.google.co.jp';
my $ua = LWP::UserAgent->new;
$ua->cookie_jar(HTTP::Cookies->new);
$ua->get($url);
my $res = $ua->post($url => {
a => 1,
b => 2,
});
warn $res->request->as_string; # 送ったデータの確認
LWP::UserAgentのcookie_jarってメソッド使ってHTTP::Cookiesのオブジェクトをセットすれば、
あとはLWP::UserAgentでGETやって、その後にPOSTするだけ
0939デフォルトの名無しさん
2009/10/07(水) 16:45:37>>936
これはどういう処理でしょうか…?
>>937
そういうことです!
>>938
おお!
とりあえずインスコしてみます
0940デフォルトの名無しさん
2009/10/07(水) 17:06:28> >>936
> これはどういう処理でしょうか…?
処理の「なかみ」を誤解して書いたものです。
> >>937
誤りかもしれないと思い直し、手順確認です。
0941デフォルトの名無しさん
2009/10/26(月) 10:50:52にこさんうどからmp3を取得するperlスクリプトを作成して頂きたいのです。
http://nicosound.anyap.info/
イメージ的には、
「get_nico_sound sm12345」「get_nico_sound nm54321」
などのコマンドを入力することによって
mp3がダウンロードされれば良いと考えております。
wgetでダウンロードを試みても上手くいかなかったので…
どなたかよろしくお願い致します。
0942デフォルトの名無しさん
2009/10/26(月) 18:58:110943デフォルトの名無しさん
2009/11/24(火) 17:38:21自分で作れカス
0944デフォルトの名無しさん
2009/11/26(木) 02:02:020945デフォルトの名無しさん
2009/11/26(木) 02:02:58俺も頼みます!
0946デフォルトの名無しさん
2009/11/27(金) 07:20:160947デフォルトの名無しさん
2009/11/28(土) 03:22:17卸売りをする中小企業で働いている者で、かなり昔に作られたプログラムの出力データファイルが存在し、
出力されたデータファイルは1000ファイルほどあり、自社名略称 商品コード略称 拡張子というファイル名です。
例えば、自社名がJALだとしたら、jal110b.ors(拡張子orsとありますが、実際はただのtxtファイルです。)となります。
出力データファイルの中身は最初の10行くらいは商品の説明や仕入先、原価などが書いてあり、その下に出荷をした企業の詳細が書いてあり、
No 取引先名 価格 値引き 出荷商品数 日付 備考
1 NCA 700 100 40 001112 担当○○様
2 BKG 700 20 001113 担当XX様
3 AOK 700 100 32 001113 出荷予定日は00年11月13日だが、担当者不在なので11月15日に延期
4 NCA 700 10 001115 追加分
といった行列が存在します。他の担当者の方が、出力データファイル名と取引先名のみが書かれたリストを作成し、
そのリストを読み込んで、出力データファイル名、取引先名、出荷商品数の合計を1つのテキストファイルに出力するプログラムを
最初はPerlを少しかじったことのある私でも組めるだろうと思っていたのですが、
取引先によって、値引きが書いてあったり書いてなかったりするので、splitで分割をすると出荷商品数の列が合わなくなり困り果てています。
0948947
2009/11/28(土) 03:23:33以下の例のように1つのテキストファイルに出力するスクリプトを書いてはいただけないでしょうか?
このファイルを読み込み、(左から、出力データファイル名、取引先名)
110b NCA
110c KBA
110d NCA
... 下にまだ300行近くあります
以下を1テキストファイルに出力。(左から、とあるプログラムで出力データファイル名、取引先名、出荷商品数の合計)
jal110b.ors NCA 50
jal110c.ors KBA 79
jal110d.ors NCA 80
よろしくお願い致します。
0949デフォルトの名無しさん
2009/11/28(土) 04:12:39値引きがない場合はタブが連続して二つ付いてるとかならまだわかるけど、
説明の読んでもどうやって値引きが書いてないかを判別すれば良いのかわからんな。
他のフィールドは必ず書かれてるっていうのなら区切った後に配列の数が一つ少ないかどうかで判断できるけど。
0950デフォルトの名無しさん
2009/11/28(土) 04:21:45確認したところスペース区切りです。
出荷商品数を列にそって計算するといった方法はPerlではできないのでしょうか?
0951デフォルトの名無しさん
2009/11/28(土) 04:42:41出荷商品数までに何文字あるか分かればできると思う
40文字あるとした場合には、
foreach(@table){
/^.{40}[0-9]*?([0-9]+)/;
$count += $1;
}
それよりインプット側のファイル内の表の部分だけ抜き出すのをどうするかのほうが大事だと思うんだが
改行区切りされてても例えば企業の詳細なんかに改行使われてたら難しくなりそうな
0952デフォルトの名無しさん
2009/11/28(土) 05:28:210953デフォルトの名無しさん
2009/11/28(土) 05:41:590954デフォルトの名無しさん
2009/11/28(土) 06:54:57確実じゃないが、splitで切るよりも文字数範囲指定で抽出がベストか
賢者求む
0955デフォルトの名無しさん
2009/11/28(土) 08:12:36use strict ;
use warnings ;
sub get_sum {
my ($name, $sbj ) = @_ ;
my $sum = 0 ;
open my $fh, '<', $name . '.ors' or die ;
while (<$fh>){
next if ! /^\d+\s+$sbj\s+(?:\d+\s+){1,2}(\d+)\s+\d{6}/ ;
$sum += $1 ;
}
close $fh ;
return join "\t", $name, $sbj, $sum ;
}
while (<>){
printf "%s\n", get_sum split /\s/, $_ ;
}
0956デフォルトの名無しさん
2009/11/28(土) 08:18:392. perl get.pl DATABASE
で実行。( DATABASE は、>>948 の入力ファイル)
注)
1. DATABASE の 110b とかは、「自社名略称 商品コード略称」が連結されてる
フォーマットだよね? ちがうならちょっと手なおしが必要。
2. スペース区切りは本当にスペース? 全角空白だったらお手上げ。
3. 日付が 6文字の数字決めうち。
0957デフォルトの名無しさん
2009/11/28(土) 13:05:570958デフォルトの名無しさん
2009/11/28(土) 15:36:09土曜日、日曜日の0〜9時はエラー
月曜〜金曜の0〜18時は〜エラー
それ以外はOK
という感じにしたいのですが、
&time_data;
if($ww eq Sat or Sun and $hour>=0 and $hour<9){&error("エラーです");}
elsif($ww eq Mon or Tue or Wed or Thu or Fri and $hour>=0 and $hour<18){&error("エラーです");}
これだと全部エラー判定になるのですが、どこをどう修正すればいいでしょうか。
よろしくお願いします
0959デフォルトの名無しさん
2009/11/28(土) 16:01:37スレ違い
if($ww eq 'Sat' or $ww eq 'Sun'){
if($hour>=0 and $hour<9){&error("エラーです");}
}
else{
if($hour>=0 and $hour<18){&error("エラーです");}
}
0960958
2009/11/28(土) 16:40:24ご修正ありがとうございました。うまく機能しました
0961デフォルトの名無しさん
2009/11/28(土) 19:30:08ありがとうございます。
説明不足があった点があるので書いておきます。
110bというのは、商品コード略称のみです。正確には、jal110b.orsが正しいのですが
このリストをまとめた人が、自社名略称と拡張子を省略しているため、110bのみになっています。
スペース区切りはスペースで問題ありません。
0962961
2009/11/28(土) 19:36:33文字数を計算したら、一応規則的に並んでいるのが分かりました。
出荷商品数の数字の部分は左から35文字目から始まるのですが、
$name, $sbjはそのままで、出荷商品数の合計値を文字数で換算して狙い撃ちはできないものでしょうか?
0963デフォルトの名無しさん
2009/11/28(土) 21:28:15my ($name, $sbj ) = @_ ;
を
my $name = 'jal' . $_[0] ;
my $sbj = $_[1] ;
へ変更。
×printf "%s\n", get_sum split /\s/, $_ ;
printf "%s\n", get_sum split /\s+/, $_ ;
にしたら望みの結果が得られるはず。
0964デフォルトの名無しさん
2009/11/28(土) 22:02:41文字数が固定してるなら、substr 関数で切り出せばいいよ。
あとはゴリゴリとコードを書くだけ。
0965デフォルトの名無しさん
2009/11/28(土) 22:17:420966デフォルトの名無しさん
2009/11/29(日) 00:29:160967デフォルトの名無しさん
2009/11/29(日) 00:36:39どなたかお願い致します。
0968デフォルトの名無しさん
2009/11/29(日) 00:49:28はどうする
0969デフォルトの名無しさん
2009/11/29(日) 01:58:34ありがとうございます。
>>963と>>955のコードをsubstrに対応させるにはどうすれば良いのでしょうか?
0970デフォルトの名無しさん
2009/11/29(日) 05:27:27ここをこう直せばおk
($sbjが他のフィールドに出てこないことが前提ですが)
while (<$fh>){
next if !/$sbj/;
my @list = split /\s+/, substr $_, 34;
$sum += $list[0];
}
0971デフォルトの名無しさん
2009/11/29(日) 19:47:35ありがとうございます。確認してみたところ、$sbj以外にも合致するフィールドが存在するみたいで、
合計値が狂ってしまうようです。
また、出力データファイル名の取引先名も規則正しく、11行目から始まるみたいなので、
next if !/$sbj/; ではなく、my @list = split /\s+/, substr $_, 34;のように文字数指定でいけないでしょうか?
再び追記なのですが、リスト参照のみの合計値の出力とは別に、
出力データファイルに存在するすべての取引先名の合計値の出力も得たいのですが、
この場合はどうすればよいのでしょうか?
お手数をおかけいたします。
0972デフォルトの名無しさん
2009/11/29(日) 20:44:090973デフォルトの名無しさん
2009/11/29(日) 20:55:000974デフォルトの名無しさん
2009/11/29(日) 21:09:20どうぞ
http://www.dotup.org/uploda/www.dotup.org409842.txt.html
pass: perl
0975デフォルトの名無しさん
2009/11/29(日) 21:20:43予想
API取得して
画像の番号を取り出す 正規表現?
※画像番号のあとにある"s"は取り出さない
http://lohas.nicoseiga.jp/img/ $画像番号."l"
ディレクトリに保存
差分保存する? bbsの題名ごとに??
※既に落としたものは再び見に行ったときには落とさない
繰り返し while使うのかな?
0976デフォルトの名無しさん
2009/11/30(月) 04:48:57じゃあこんな感じではいかがでしょう
while (<$fh>){
/^.{10}(\w+)\s/;
my $current = $1;
next if $current !~ /$sbj/;
my @list = split /\s+/, substr $_, 34;
$sum += $list[0];
}
サンプルファイルだと、
フィールドは13文字めから始まるように見えるのですが、
だったら適当にかえてください
0977デフォルトの名無しさん
2009/11/30(月) 11:12:53取引先名も英語3文字だから他で一致しなそうだけど
0978デフォルトの名無しさん
2009/11/30(月) 20:40:48すまんがその日本語から察するとあなたにプログラムは書けないと思う
0979デフォルトの名無しさん
2009/12/02(水) 20:38:41うるうる
0980デフォルトの名無しさん
2009/12/04(金) 01:30:06また、指定したスレではなく、AAサロンとかのスレすべてから・・・という形にしたいんですが。
0981デフォルトの名無しさん
2009/12/04(金) 01:30:52ミスったので、訂正します。
2chのスレをAAだけにしてtxtで保存するスクリプトを作りたいのですが。
また、指定したスレではなく、AAサロンとかのスレすべてから・・・という形にしたいんですが。
0982デフォルトの名無しさん
2009/12/04(金) 09:29:32で、どの部分がうまく動かないのだ?
Perlの質問だからね、ソースが無いとアドバイスできないなぁ。
そのアルゴリズムの解説には本が一冊できそうだよ。
0983デフォルトの名無しさん
2009/12/04(金) 09:31:18逝ってくる。
0984デフォルトの名無しさん
2009/12/04(金) 12:36:22文章かAAかの切り分けはそんなに難しくないだろう。
形態素分析にでもかければ「文章らしさ」のチェックができるから、
スコアが低いのがAA。
AAか任意の文字列かの切り分けはAIの世界の話だが。
まあ、
ノシ
OTZ
みたいな単発AAは難しいけどな。
前者、人間にだって、予備知識がなければ熨斗なのか手を振ってるのか普通にわからん。
後者、OTZはラルフ・ウィエン記念空港の空港コードだしな。
0985デフォルトの名無しさん
2009/12/04(金) 16:40:51質問じゃなくねw?
0986デフォルトの名無しさん
2009/12/04(金) 16:43:460987デフォルトの名無しさん
2009/12/04(金) 17:46:390988デフォルトの名無しさん
2009/12/05(土) 01:14:070989デフォルトの名無しさん
2009/12/05(土) 17:42:17両手をパタパタすれば空を飛べるから。
レス数が950を超えています。1000を超えると書き込みができなくなります。