Perl初心者スレ(マジレス回答) (523レス)
1-

419: 2018/06/28(木)03:08 ID:mceaYjQ2(2/2) AAS
perl5の範囲演算子 ... じゃなくて .. だったね。失礼。
420: 2018/06/28(木)13:40 ID:n10gG+NH(1) AAS
>>418
できました。ありがとうございます。
421: 2018/06/29(金)22:13 ID:jsqIPRMd(1) AAS
Neko演算子なんてあるのねw
422
(1): 2018/07/04(水)22:52 ID:gFgZc5FG(1) AAS
ANH
423: 2018/07/06(金)12:26 ID:uTPDH9XV(1) AAS
ANH
424: 2018/07/12(木)14:35 ID:EgbO6wCv(1) AAS
Perlの勉強始めました。
425: 2018/07/12(木)16:09 ID:sm9NZXwJ(1) AAS
冷やし中華始めました。
426: 2018/07/19(木)12:24 ID:0leqnnH4(1) AAS
Xorgってperlで描かれてるコマンドが多い気がするけどなんで?
427: 2018/08/03(金)22:49 ID:G69i9RgI(1) AAS
なんだろう? 計算式で質問投稿しようとするとNGワードエラーで拒否られてしまう orz
全角でもダメかー
428
(3): 427です 2018/08/04(土)19:04 ID:pEPpCry/(1/2) AAS
これで書けるかな?

代入計算式のソースと書きたかった質問内容をマンゴースレに貼りました。
2chスレ:mango
429: 427です 2018/08/04(土)19:09 ID:pEPpCry/(2/2) AAS
>428 の書き込みで、本来続きだった リンク先 >422
16進〜解説お願いできませんでしょうか?
の文章内だけでもNG含んでるとか・・・・プログラム技術板・・コミュニケーション終わってね?
430
(1): 2018/08/05(日)06:11 ID:cdvogGHQ(1/4) AAS
>>428
よくわからないんだけど、下2桁を60で割って3桁目より上は1の位にシフトしているわけだよね。
とするとあり得るのは時間の時と分について 時 * 100 + 分 とやった結果が数値として入っていて、
それの時間単位への変換ではないか?

例えば元の値が 315 なら3時間15分という意味で、それを時間単位に直すと 3.25 時間ってこと。
431
(1): 2018/08/05(日)06:13 ID:cdvogGHQ(2/4) AAS
時と分とは限らないか。分と秒かも知れない。まあしかし下2桁は60進法で考えなければいけないということに変わりはない。
432
(1): 2018/08/05(日)07:50 ID:cdvogGHQ(3/4) AAS
>>428
ところで元のプログラムに「16進バイナリデータを・・・」というコメントが入っているのだろうが、呼び出す側は実際には何を渡している?

仮に元がバイナリだったとしても unpack('N', ...) のようなことをしていない? だとするとそこでバイナリから Perl の
変数への変換自体は終わっている。

つまり、コメントが紛らわしい表現になっているだけ。
433
(1): 427です これは書けるかな? 2018/08/05(日)12:21 ID:gWGunr7x(1/2) AAS
>430-432 スミマセンです。 orz
もっと詳しく書こうとするとマンゴースレでもブロックされました。
ぶっちゃけ、この中の
外部リンク[zip]:motor.geocities.jp
「dc10mov2csv.pl」内です。

gps_data{'latitude'}の部分からです

gps_data{'bearing'}の式は
変換が単精度浮動小数点数(float)のIEEE754 単精度float変換で合ってますか?

これをベースに別メーカー機種の同様な構造を持つデータでの他言語の変換プログラムを考えているので。
434
(1): 2018/08/05(日)17:23 ID:cdvogGHQ(4/4) AAS
>>433
pack, unpack の f は機種依存なので IEEE 754 単制度になるかどうかはプログラムからだけではわからない。
外部リンク:perldoc.jp
まあでも今時の普通のPC用Perlならなってそうな気がするけどね。

latitude って緯度か。GPSデータのバイナリをPerlの変数に入れているということだな。
だから下2桁を60進法で考える必要があると。

やはりそのプログラムのコメントは紛らわしいってだけだよ(サブルーチン名も紛らわしいが)。
bin_convert 呼ぶときには既にバイナリから float に unpack されてるから。
で、bin_convert 内でやっているのは先に書いた通り下2桁を60進法で小数点以下の値にしてるってことね。
435: 427です 2018/08/05(日)21:57 ID:gWGunr7x(2/2) AAS
>>434
ありがとうございます。
全体からずらして抜いたもの60進法にしてるだけなんですね。
てっきりバイナリから浮動小数点を出す特殊計算かと思っていました。
適当にがんばります。
436: 2018/10/05(金)20:29 ID:ZpFL29Ml(1) AAS
「サンプル」のCSVを文末の「結果」に変換するプログラムをPerlで作りたいです。
● サンプルのCSVの構造:
1コラム目:数字8桁の昇順、2コラム目:数字1桁、3コラム目:文字列
● 作りたいプログラム:
1コラム目、3コラム目は保持する。複数レコードで1コラム目に重複があれば、
それらの複数レコードの2コラム目の1桁数字を連番にする。
1コラム目に重複がない場合は、当該レコードの2コラム目を1にする。

● 「サンプル」
06030002,6,文字列A
06030004,3,文字列B
06030004,4,文字列C
06030004,5,文字列D
06030005,3,文字列E
06030005,4,文字列F
06030006,3,文字列G
06030006,4,文字列H
06030006,7,文字列I
06030007,3,文字列J
06030008,3,文字列K
● 「結果」
06030002,1,文字列A
06030004,1,文字列B
06030004,2,文字列C
06030004,3,文字列D
06030005,1,文字列E
06030005,2,文字列F
06030006,1,文字列G
06030006,2,文字列H
06030006,3,文字列I
06030007,1,文字列J
06030008,1,文字列K
437: 2018/10/05(金)21:39 ID:liWk4NPs(1) AAS
まずは自分で書いてみたコードを晒すところからだな。
438
(2): 2018/10/05(金)22:57 ID:kjx9soPU(1) AAS
一行プログラムが思い浮かんだ。

最初の列をハッシュのキーにして3列目をpush。
全部読んだらキーをソートして読んだ内容に番号降りつつ出力。

しかし俺は今電車の中からスマホで書いてるのでここに書く気が起きない。
439
(1): 2018/10/06(土)00:22 ID:mGKg2bAW(1) AAS
Ruby で作った

require 'csv'

count = Hash.new( 0 ) # 初期値は、0

# コロン区切りのCSV 入力ファイルを、1行ずつ処理する
CSV.foreach( "input.csv" ) do |row|
count[ row[ 0 ] ] += 1
row[ 1 ] = count[ row[ 0 ] ]

puts row.join( "," )
end
440: 2018/10/06(土)02:20 ID:m3dYH3N7(1) AAS
考え方は >>439 と同じ

perl -pe "s/^([^,]+,)[^,]+/$1.++$count{$1}/e" < sample.csv
441: 2018/10/06(土)03:33 ID:gPBhgV7B(1) AAS
my @y = "";
while(<>) {
my @x = split ",";
# $x[1] = $x[0] eq $y[0] && ++$y[1] || 1;
$x[1] = $x[0] ne $y[0] || ++$y[1];
print join ",", (@y = @x);
}
ウチでやるならこうかしら
442: 438 2018/10/06(土)06:07 ID:J8Y2BFN6(1/2) AAS
おはよう。

元のテキストが s.txt に入っているとして、こうする。

perl -ne 'chomp;@d=split/,/;push(@{$h{$d[0]}},$d[2]);END{for(sort keys%h){for($i=0;$i<@{$h{$_}};$i++){print join(",",$_,$i+1,$h{$_}[$i])."\n"}}}' s.txt

なげーなw
443: 438 2018/10/06(土)06:21 ID:J8Y2BFN6(2/2) AAS
あ、そうか。貯め込む必要はなくてハッシュ作ってそのまんま出せば良いんだよな。

じゃあawkの方が楽ではないか?

awk -F, 'BEGIN{OFS=","}{n[$1]++;print $1,n[$1],$3}' s.txt
444: 2018/10/06(土)17:28 ID:MMGbFZjG(1) AAS
436です。皆様ありがとうございました。
自分では1行ずつ処理することまでしかできず、複数レコードの
1コラム目の比較をすることができませんでした。
おかげさまで体育の日に子供の運動会に行けます!
ありがとうございました!
445: 2018/11/11(日)14:10 ID:eqm/EHYd(1/2) AAS
上の方のレスにも関連したものがありますが、
ファイルから読み込んだ文字列データにて
パターンマッチがヒットしません。
同一文字列を直接コード内に定義すると、ヒットします。

出来ればファイルに切り出したいので、
ご教示いただけますでしょうか。
446
(1): 2018/11/11(日)14:11 ID:eqm/EHYd(2/2) AAS
[環境]
Activeperl win8.1 or 2016 server
perl -v
This is perl 5, version 24, subversion 3 (v5.24.3) built for MSWin32-x64-multi-thread

[コード utf-8で作成]
#res[1]にはcp932のコードの「テスト」を含む文字列が格納されている。
$res[1] = Encode::decode('cp932', $res[1]);

#patern.txtはutf-8で「テスト」の文字列が格納されている。
open (FILE, "<:utf8", "patern.txt") or (die "$!");
my $line = <FILE>;
close(FILE);
#$line = 'テスト';←#を外して直接コードに書くとヒットする。
print encode('cp932', $line);(正常に取得できている。)

if ($res[1] =~ /$line/){
print "Hit!";
} else{
print "not Hit";
}

---出力---
>テスト
>not Hit
447: 2018/11/11(日)16:14 ID:56YuZzmp(1) AAS
>>446
改行文字の有無?
448: 2018/11/11(日)18:17 ID:t5AG7sJB(1) AAS
たぶんそれだな。$line の中身が "テスト\r\n" または "テスト\n" になってそう。
1-
あと 75 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.015s