• 締切済み

Perl 変換について

$dm1の値は変化させずに$dm2に変換後の数値を入れるにはどのようにしたら良いでしょうか? $dm1 = a1234 $dm2 = $dm1 =~ tr/[a-zA-Z]//d;  ※これだとうまくいかない。 結果以下のようにしたい。 $dm1 = a1234 $dm2 = 1234

みんなの回答

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

悩むくらいなら $dm2 = $dm1 ; $dm2 =~ tr/[a-zA-Z]//d; と分けて書くのが無難。

dyo
質問者

補足

それでは理解が深まっていかないので聞いたのですが…ダメですか?

全文を見る
すると、全ての回答が全文表示されます。
  • mtaka2
  • ベストアンサー率73% (867/1179)
回答No.2

演算子の優先順位の問題です。 ($dm2 = $dm1) =~ tr/[a-zA-Z]//d; でいけるでしょう。

全文を見る
すると、全ての回答が全文表示されます。
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Perl パターンマッチについて

    $dm = a1234 $dm =~ tr/[a-zA-Z]//d; $dm は 「1234」になりますが、 $dm =~ tr/[^0-9]//d; これだと 「a」 になってしまうのは何故でしょうか?

  • Ruby1.9で全角文字を半角文字にうまく変換できません。

    Ruby1.9で全角文字を半角文字にうまく変換できません。 英数字までは以下のロジックでうまく出来たのですが、カナが正しく変換されません。 何か良い知恵をどうかご教示のほどお願いいたします。 ※★→←★の間の文字は半角カナです(ブラウザ上全角カナとなってしまうため、便宜上補足しました)。 moji = "イあ1Aa" moji.tr('a-zA-Z0-9ア-ン', 'a-zA-Z0-9★→ア-ン←★') 結果:★→ウ←★あ1Aa 何故か半角のイではなく半角のウとなってしまう。    ※アの場合のみ正しく半角のアに変換される。

    • ベストアンサー
    • Ruby
  • 全角英数字を半角英数字に変換したい

    全角英数字を半角英数字に変換する方法を教えて下さい。 $data =~ tr/0-9a-zA-Z/0-9a-zA-Z/; 以上のようにした場合、J-perl意外では望みどおりに変換されません。 jcode.plをつかって 全角英数字を半角英数字に変換する方法があると、 書かれていた方がいましたので、 できればjcode.plをつかった場合の 具体的なスクリプトの書き方を教えて下さい。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • jcode.plのかわり

    jcode.plの jcode::tr() のかわりを探しています。 jcode.plの jcode::tr(\$val,'0-9A-Za-z ()_@-','0-9A-Za-z ()_@-'); をPerl5.18.2で使用するとエラーが出てしまいます。これを回避したい。 プログラムがUTF-8であれば $val =~ tr/0-9A-Za-z ()_@-/0-9A-Za-z ()_@-/; のようにすれば実現可能みたいですが、プログラムはEUCで書かれています。 影響範囲からプログラムの文字コードをかえることはできれば避けたい。 一文字ずつ変換することも考えましたが、この方法ではパフォーマンスに懸念があります。 jacode.plなるものもありますが、これに置き換えるだけでは文字化けしてしまいました。 jcode::tr()のかわりになるような手段はあるのでしょうか?

    • ベストアンサー
    • Perl
  • perlでurlが正しいか判定したい

    perlでホームページのURLが正しいか判定したいのですが、ネットで調べていても出てくるのがメールアドレスの判定方法ばかりで、ホームページに関してのことがなかなか見つかりません。 if($url !~ /^https?:\/\/[\w\.-~\?&=\/]{4,}/) { } こんな感じで適当にやっていたのですが、なぜか ,(カンマ) のチェックをスルーしてしまったりと思うように制御できておらず、 http://www.din.or.jp/~ohzaki/perl.htm#httpURL このページを読んでもちんぷんかんぷんで、とりあえず if($url !~ /\b(?:https?|shttp)://(?:(?:[-_.!~*'()a-zA-Z0-9;:&=+$,]|%[0-9A-Fa-f ][0-9A-Fa-f])*@)?(?:(?:[a-zA-Z0-9](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.) *[a-zA-Z](?:[-a-zA-Z0-9]*[a-zA-Z0-9])?\.?|[0-9]+\.[0-9]+\.[0-9]+\. [0-9]+)(?::[0-9]*)?(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f] [0-9A-Fa-f])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A- Fa-f])*)*(?:/(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f ])*(?:;(?:[-_.!~*'()a-zA-Z0-9:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])*)*) *)?(?:\?(?:[-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f]) *)?(?:#(?:[-_.!~*'()a-zA-Z0-9;/?:@&=+$,]|%[0-9A-Fa-f][0-9A-Fa-f])* )?/){ } こんな感じで代入してみても予想どおり構文エラーとなってしまい、どうやればいいのか困っています。(あまりの長さに理解できていないためエスケープも一切させてないので、エラーが出て当然といえば当然ですが) そこまで厳密にでなくてもかまわないのですが、ホームページのURLに間違いがないかチェックする方法はないでしょうか。 (特に . と , や : と ; や ~ と ^ の入力間違い、スペースが入っていないかとか全角入力になっていないかなどをチェックしたいです)

    • ベストアンサー
    • Perl
  • うまくいかない全角→半角変換の仕方

    あちこち見てまわったのです。 とほほの ~ から個人の小規模なページまで。 $add ='test@test.ne.jp'; jcode::convert(\$add, 'euc'); jcode::tr(\$add, '0-9A-Za-z', '0-9A-Za-z'); jcode::convert(\$add, 'sjis'); print $add; ・・・@マークがまあ、この場合変換対象にはいって ないにしろ、なぜか表示されるものは、数字の 「11」 とか 文字列を変えると場合によっては「8」 とか出てきます。 また(2度目)借りているサーバー環境が悪いんで しょうか??? ほとほと参ってます(泣)。

    • ベストアンサー
    • Perl
  • 動的ページを静的ページの変換

    動的ページを静的ページの変換で http://www.yyyyy.com/aaa/bbb/xxx.php?word=xxx&ger=1234&sort=xxxx を http://www.yyyyy.com/aaa/bbb/xxx.php/xxx/1234/xxxx.html としたいのですが、、うまくいきません。 DirectoryIndex xxx.php RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([0-9A-Za-z]+)/([0-9]+)/([0-9A-Za-z]+)\.html$ xxx.php?word=$1&ger=$2&sot=$3 [L] と RewriteEngine on RewriteRule ^([0-9A-Za-z]+)/([0-9]+)/([0-9A-Za-z]+)\.html$ xxx.php?word=$1&ger=$2&sot=$3 [L] で試しました。 サーバーはxreaです。 よろしくおねがいいたします。

    • 締切済み
    • PHP
  • perlスクリプト $1 qq などについて。

    以下のスクリプトについて質問があります。 $_ = $mail; m/(^[a-zA-Z0-9\.\_\-]+\@[a-zA-Z0-9\.\_\-]+)/g; $mail = $1; if($in{mail} ne $mail){ &PrintError('メールアドレスは、半角文字で書いてください。'); } このスクリプトなのですが、$mailの値を$_に代入し、$_の値をm/・・・ の部分で半角チェックしているのは分かるのですが、半角チェックされた後どうなっているのかがわかりません。また、$1 とはどうゆう意味なのでしょうか??ifより後の部分は分かっています。 また、 open(IN, "<database.dat"); while (<IN>) { print; } close(IN); の全体的な説明をお願いしたいです。ファイルハンドルという概念とopen,close両関数は分かっています。 最後に print qq(Content-type: text/html; charset=Shift_JIS\n\n); とあった場合の qq の意味が分かりません。 分かる方いらっしゃいましたらご教授くださると幸いです。よろしくお願いします。

    • ベストアンサー
    • Perl
  • PIC A/D変換での問題

    PIC16F690を使用しLCDにA/D変換をした数値を表示させる物を作ったのですが 抵抗を一定の速度で回しても数値が一定の速度で変化しません。 詳しく説明しますと、今回書いたプログラムは8bitで255までの値を表示させるものです。 抵抗をめいいっぱい回して数値を1にし(0にはどうしてもなりません。おそらく抵抗の問題) そこからゆっくりと一定の速度で抵抗を回すと数値が上がっていきます。 30辺りまでは一定の速度で数値が変化するのですが、そこから少し回すといきなり数値が220ぐらいにまで上がります。(一応30~210までの数値も出ている様なのでいきなり飛んでるわけではない) 抵抗を1Kのものから10Kものに変えてみたりしたのですが症状に変化はありませんでした。 どうしても解決できなかったので質問をした次第です。 解決方法がわかる方がいらっしゃいましたらお教え下さい。 プログラムを載せておきます。 #include<pic.h> #include<stdio.h> #include "lcd.h" unsigned int temp; unsigned int x = 1; unsigned char outString[20]; unsigned char count[20]; void init_a2d(void){ ADCON1=0x10; // A/D Clock Fosc/8 ADCON0=0x01; // A2D 入力をChannel 0 (RA0), // Left justified, A/D をON } // 指定された入力チャネルをA/D変換し8 bitの結果を返す unsigned char read_a2d(unsigned char channel){ channel&=0x0F; // 4 bitsを確認し ADCON0&=0xC3; // 現行入力チャネルをクリア ADCON0|=(channel<<2); // 新入力チャネルを設定 GODONE=1; // 変換開始 while(GODONE)continue; // 変換終了を待つ return(ADRESH); // 8 bitの結果を返 } void main(void) { pic_init(); init_a2d(); // A/D モジュール初期化 lcd_init(); lcd_goto(0x00); while(1) { __delay_us(50); // 50uS待ち(AD充電待ち) temp=read_a2d(0); sprintf(outString,"A/D=%2d",temp); lcd_puts(outString); lcd_goto(0x40); sprintf(count,"Count=%d",x); lcd_puts(count); x++; __delay_ms(100); lcd_clear(); } }

  • 10進数の実数値の値を32ビットで表す16進法に変換したいのですが

    10進数の実数値の値を32ビットで表す16進法に変換したいのですが 方法がわかりません。 例えば10進(1.23)を16進(70A43F9D)に変換したいのです。 ご存知の方がいらっしゃいましたら宜しくお願いいたします。 環境は、VB2005です。

このQ&Aのポイント
  • 【MFC-J6583CDW】のスキャンしたデータを簡単にEメールで送信することができなくなってしまいました。
  • Windows11を使用している【MFC-J6583CDW】の無線LAN接続で、スキャンしたデータをEメールで送信することができません。
  • ブラザー製品の【MFC-J6583CDW】で、スキャンしたデータのEメール送信機能が正常に動作しなくなりました。
回答を見る