位置情報で子どもの居場所をお知らせ

perlについて
for(@array){
s/b/B/;
}
は時々使うのですが、
s/b/B/ for @array;
でも同じようです。この書式の意味がわからないのですがなぜおなじになるのでしょうか?

また、
@before = map {$_ =~ s/b/B/; $_} @before;
とも全く同じ意味でしょうか?

また、こちらは良い方法があったら教えていただきたいのですが、何年もperlを使っているのですがmapとgrepの使い方はググらない書けないのですが覚えるためのいい方法はありますか?

A 回答 (2件)

    • good
    • 0
この回答へのお礼

ありがとうございます。
せっかくなのですが英語では読めないので・・・ただ、そこにあった単語で検索すると日本語のページがありました!

他の方の役に立つと思いますので一応、こちらで調べてURLも載せておきます。
http://perldoc.jp/docs/perl/5.8.8/perlsyn.pod

お礼日時:2019/03/25 23:45

「意味がわからない」のなら, 意味を理解すべきだと思うな.

    • good
    • 0
この回答へのお礼

回答いただきありがとうございます。s/b/B/ for @array;で検索しても極めて単純な書式なためこういった書式がなぜ使えるのか分からないのです。どのように調べればよいでしょうか?

お礼日時:2019/03/25 16:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

Qスーパーハッカーやホワイトハッカーが未だにプログラムをキーボードを使ってアナログな入力を10年前と変

スーパーハッカーやホワイトハッカーが未だにプログラムをキーボードを使ってアナログな入力を10年前と変わらずに未だにガチガチキーパンチャーしてるのって一般人から見たら超絶ダサいらしいですよ。

マツコデラックスがスーパーハッカーがプログラムをキーボードで打っていたのを見て「まだキーボードで打ってるんだ。人工知能や音声を文字化出来るようになってるのに10年前と変わらずキーボードで打ってるの?!」と言っていましたが、本当にそうだなと思いました。

未だにキーボードでプログラミングしてるって古くさいというか自動化、自動化と言ってる割にプログラマーが1番アナログだったりして。

Aベストアンサー

それは普通の文章入力しか想像できない人の発想ですね。

プログラミング言語では記号を多用しますが、これをいちいちダブルコーテーションだのアットマークだの言うのは手間だし、実は記号じゃなくてダブルコーテーションは”じゃなくそのままダブルコーテーションっていう文字列にしたかったんだけど…みたいな区別に困ることもあります。その辺をきれいに解決する手段が今のところないってこと、また「キーボード入力の方が話すよりも速くてしかも正確に入力できる」と言う事実があること、またいちいち口に出すと言うことは意外に労力を要すること、といった事情から音声認識でどうにかしようという空気にならないのでしょう。

Qjavaが文字コードの影響でコンパイルが通りません。

java jdk-12 , windows10 , Tera Pad でコンパイルしようとしていますが、

 1つ目、

  エラー: この文字(0xEF)は、エンコーディングwindows-31jにマップできません

のエラーが出てコンパイルが通りません。 

ネットで調べて -encoding UTF-8 を追加してコンパイルしたら通ったのですが、次に

 2つ目、

  エラー: '\ufeff'は不正な文字です

というエラーが出ます。

UTF-8のBOMが原因のようですが、ネットで調べた方法をいくつか試してみても

コンパイルが通りません。

どのようにしたらよいでしょうか?


試した方法: UTF-8N にする , 一度Shift-Jisに変換してみる
$ nkf --overwrite --oc=UTF-8 ($は内部コマンドまたは...認識されませんと出ます)
ネット上のBOMをスキップする方法というソース

java jdk-12 , windows10 , Tera Pad でコンパイルしようとしていますが、

 1つ目、

  エラー: この文字(0xEF)は、エンコーディングwindows-31jにマップできません

のエラーが出てコンパイルが通りません。 

ネットで調べて -encoding UTF-8 を追加してコンパイルしたら通ったのですが、次に

 2つ目、

  エラー: '\ufeff'は不正な文字です

というエラーが出ます。

UTF-8のBOMが原因のようですが、ネットで調べた方法をいくつか試してみても

コンパイルが通りません。

ど...続きを読む

Aベストアンサー

>エラー: この文字(0xEF)は、エンコーディングwindows-31jにマップできません

日本語環境のWindowsで、普通に起動したコマンドプロンプトはShiftJISなんじゃないですかね?
https://qiita.com/user0/items/a9116acc7bd7b70ecfb0

TeraPadで保存時の文字コードをShiftJISにしたらどうなるでしょう?

とは言え…JavaならUTF-8とかでしょうかねぇ。
先程掲示したURLの方法でコードページをUTF-8にしてみてはどうでしょうか。

>$ nkf --overwrite --oc=UTF-8 ($は内部コマンドまたは...認識されませんと出ます)

Windowsには標準でnkfは入っていないと思いますけど、そこのところどうなんです?
vectorとかからDLして入れたんですか?
そして…コマンド入力時にプロンプトは入力しませんよ?
# Linuxとかのシェルのプロンプトだと思いますが…。

QC#について質問【複数の.datファイルからデータを取得後csvファイルでリストを作成】

いつもお世話になります。
複数の.datファイル(カンマ区切りの4~5列、約800行程度)
ProcessData,LOT_ID,3,AP0076686.00C,
ProcessData,LOT_ID_SUB,3,AP0076686.00,
ProcessData,LOT_NO,3,AP0076686,
ProcessData,WAFER_ID,3,AP0076686.19,
ProcessData,WAFER_NO,1,19,
ProcessData,PRODSPEC_ID,3,T5DH20001-00001.00,
ProcessData,PRODGRP_ID,3,T5DH2,
ProcessData,PRODGRP_BIND,3,T5DH2,
ProcessData,MAIN_MAINPD_ID,3,A6L511NY.00,
ProcessData,MAINPD_ID,3,A6L511NY.00,
ProcessData,FLOW_TYPE,3,Main,
ProcessData,FLOW_TYPE_NO,1,1,
ProcessData,D_SEQNO,1,169,
ProcessData,OP_NO,3,PNH PEP.MA1,
ProcessData,OP_NO_NAME,3,本処理,
ProcessData,PD_IDENT,3,PPNHIMA1.00,
ProcessData,PD_IDENT_NAME,3,PEP,
ProcessData,EQP_GROUP_CODE,3,PKRF,
ProcessData,EQP_GROUP_NAME,3,KrF SCANNER(SK3000 + ES5),
ProcessData,EQP_GROUP_BIND,3,PKRF,
ProcessData,EQP_ID,3,PKRF004,
ProcessData,PH_RECIPE_ID,3,PES5MIX,
ProcessData,RCP_NAME_SPACE,3,PEPMA,
ProcessData,LC_RECIPE_ID,3,PKRF.01,
ProcessData,RECIPE_ID,3,PEPMA.PES5MIX,
ProcessData,S_DATE,4,2019/01/24 12:47:09,
ProcessData,E_DATE,4,2019/01/24 12:47:51,
ProcessData,CAST_ID,3,PA0-00349,
ProcessData,SLOT_NO,1,19,

の中からSplitを用いて string[]dataTemp = fileData.Split(',');で
(ProcessData[0],EQP_ID[1],3[2],PKRF004[3],)のように配列に格納して
ifを使ってdataTemp[1] == "EQP_ID"の時にdataTemp[3](PKRF004)を
    dataTemp[1] == "LOT_ID"の時にdataTemp[3] (AP0076686.00C)を
    dataTemp[1] == "WAFER_ID"の時にdataTemp[3] (AP0076686.19)を
dataTemp[1] == "S_DATE"の時にdataTemp[3](2019/01/24 12:47:09)を
新たにCSVファイルを作成して上記のデータを入力したリストを作りたいのですが、C#初心者で
色々と試行錯誤しましたが知識が足りないようです。。。。


リストについてはヘッダーなどは必要ありません。.datが大量にあるので一列にEQP_ID、LOT_ID、WAFER_ID、S_DATEが並んだ状態で何100行とある状態リストを作成したいです。

詳しい方ご教授をお願いいたします。

いつもお世話になります。
複数の.datファイル(カンマ区切りの4~5列、約800行程度)
ProcessData,LOT_ID,3,AP0076686.00C,
ProcessData,LOT_ID_SUB,3,AP0076686.00,
ProcessData,LOT_NO,3,AP0076686,
ProcessData,WAFER_ID,3,AP0076686.19,
ProcessData,WAFER_NO,1,19,
ProcessData,PRODSPEC_ID,3,T5DH20001-00001.00,
ProcessData,PRODGRP_ID,3,T5DH2,
ProcessData,PRODGRP_BIND,3,T5DH2,
ProcessData,MAIN_MAINPD_ID,3,A6L511NY.00,
ProcessData,MAINPD_ID,3,A6L511NY.00,
ProcessData,FLOW_TYP...続きを読む

Aベストアンサー

質問内容が多岐に渡ってきているため、どこまで出来て、どこが出来ないのか、を整理して、
改めて質問を行うことをお勧めします。

今できないのは、元の質問内容ではなく、それぞれのロジックの書き方を理解していませんよね。
C#の文法。
対象ディレクトリ内のファイルの一覧を得るにはどうすればいいのか。
ファイルの読み込み、書き出しをするにはどうすればいいのか。
繰り返し処理するにはどうすればいいのか。
など。

最終目的を質問しても、誰も正解は教えてくれませんし、ネットには正解は転がっていません。
知識、情報を組み合わせて正解を作り上げるので。

そのため、実現するためのプロセスを細分化し、プロセス単位に方法論をネットで調べるとか、質問するとかになると思います。

QPerlで、「が」を、「が」に戻す方法

Perlで作ったcgiで、ブラウザから文字入力してデータ保存するcgiがあるのですが、データの「が」が、「が」のように保存されてしまうケースがあります。
おそらく「か」+「濁点の゛」の2つに分かれてしまったのだと思います。
データは、EUC-JPでテキストで保存されています。

このデータ「が」を、「が」に戻す方法を教えてください。

Aベストアンサー

力ずくだけど s/// で変換する.

Qpythonのデータ型に組み込み型があると思いますが、なぜ組み込み型と呼ぶのでしょう? なにが何に組

pythonのデータ型に組み込み型があると思いますが、なぜ組み込み型と呼ぶのでしょう?
なにが何に組み込まれているのでしょう?
オブジェクトにデータ型が組み込まれているという意味でしょうか?

Aベストアンサー

型が言語に組み込まれている。
https://docs.python.org/ja/3/library/stdtypes.html

クラス型なんかは組み込み型や他のクラス型の組合せでPythonプログラム上で定義できるけど、組み込み型が何もなかったらクラス型の定義もできないですから。

Q関数によって、MAX_PATHの値が異なる理由を教えてください。

MAX_PATHは260固定なのに、関数によって異なる理由を教えてください。

CreateFileは259文字まで、それ以上は関数が失敗します。
MakeSureDirectoryPathExistsは248文字まで、それ以上は関数が失敗します。
renameは220文字まで、それ以上は関数が失敗します。

Aベストアンサー

昔のファイルシステム(FAT)ではパス名の最長が255文字に制限されていました。
それに、ドライブレター等(C:¥)3文字とファイル名(8+3)の間のピリオド1文字で
255+3+1=259文字が最長パスです。
さらに、C言語で作成されたライブラリでは、
文字列の末尾にはNull文字(0x00)を付ける約束になっています。
それを含めて、MAX_PATH=260 となっています。
今どきのファイルシステム(NTFS)とはかなり違いますよね。
そんな訳で、時代とともに移り変わるシステムの中身が、
統一が取れているはずと思う方がおかしい。

QC言語、変数のスコープ

下のようなプログラムを作りました。

変数nの宣言の場所なのですが、最初main()関数の中で宣言していましたが、コンパイル時にエラーとなり、下記のようにmain()の外に出したらうまくコンパイルされ、実行結果も期待通りになりました。

そこで質問ですが、最初のようにmain()関数内で宣言すると、呼び出した関数内ではその変数は無効になるということでしょうか。

ちなみにnは、計算対象のデータ数で、main()関数内でコンソール入力によって決定します。

関数を呼び出したら親子のような関係という先入観があり、子の関数でも有効になるように思っていました。

抽象的かもしれませんが、よろしくご教授をお願いします。

◆◆◆◆◆◆◆◆◆◆
void fucnA(...);
void funcB(...);
void funcC(引数にnを含む);

int n;

int main(void)
{
...
(nを使用)
fucnC(引数にnを含む);
funcA(...);
funcC(引数にnを含む);
...
}

void funcA(...)
{
...
funcC(引数にnを含む);
...
}

void funcB(...)
{
...
}

void funcC(引数にnを含む)
{
(nを使用)
}
◆◆◆◆◆◆◆◆◆◆

下のようなプログラムを作りました。

変数nの宣言の場所なのですが、最初main()関数の中で宣言していましたが、コンパイル時にエラーとなり、下記のようにmain()の外に出したらうまくコンパイルされ、実行結果も期待通りになりました。

そこで質問ですが、最初のようにmain()関数内で宣言すると、呼び出した関数内ではその変数は無効になるということでしょうか。

ちなみにnは、計算対象のデータ数で、main()関数内でコンソール入力によって決定します。

関数を呼び出したら親子のような関係という先...続きを読む

Aベストアンサー

ローカル変数とグローバル変数の取り扱いには注意が必要です。

ローカル変数:スコープ範囲は宣言をした関数内のみ
グローバル変数:スコープ範囲はプログラムを書いているファイル内
グローバル変数とローカル変数が同じ変数名を用いている場合はその関数内においてはローカル変数のものとして取り扱います。

また、C言語での引数は必ず値渡しになります。
たとえば次のようなプログラムがどのように動くか考えてみましょう。

#include "stdio.h"

int n;
void func(int n);

int main(void){
n = 1;
printf("n=%d\n",n);
func(n);
printf("n=%d\n",n);
return 0;
}

func(int n){
n++;
}

気を付けておきたいのはmain()で表示している"n"とfunc()で操作している"n"は全く別物であるということです。

mainからfuncにnを渡していますが、funcの引数nはfunc内で宣言しているものであるためローカル変数として扱われグローバル変数のnとは別のものとして扱われます。
mainからfuncへの値の引き渡しはグローバル変数nの値をfunc内ローカル変数nに代入することで行われます。
(この時点でグローバルnは1,func内ローカルnも同じく1です。)
func内でnをインクリメントしていますが、これはローカル変数としてのnをインクリメントしているのであり、グローバルnは影響を受けません。
(この時点でグローバルnは1,func内ローカルnは2となります。)
この後でmain()関数内でnの値を表示していますが、これはグローバルnの値を表示していますので"0"を出力します。

もし、funcの中でグローバルnを直接操作したいのであれば、func内でnを宣言せず、引数としてして引き渡さず直接扱うことになります。
上記のプログラムの場合、funcの宣言内の(int n)を(void)に変え、mainでのfuncの呼び出しをfunc();とすればよいでしょう。
グローバルとローカルで同じ名前の変数を使うと間違いの元です。

グローバル変数を使わずに呼び出し側の変数を操作する場合はポインタを利用しましょう。

ローカル変数とグローバル変数の取り扱いには注意が必要です。

ローカル変数:スコープ範囲は宣言をした関数内のみ
グローバル変数:スコープ範囲はプログラムを書いているファイル内
グローバル変数とローカル変数が同じ変数名を用いている場合はその関数内においてはローカル変数のものとして取り扱います。

また、C言語での引数は必ず値渡しになります。
たとえば次のようなプログラムがどのように動くか考えてみましょう。

#include "stdio.h"

int n;
void func(int n);

int main(void){
n = 1;
printf...続きを読む

Qフォルダ内のファイルのインデックス付与基準

Windowsでは、フォルダ内のファイルがインデックスで管理されているため、VBscriptなどからファイル名ではなく、インデックスでファイルにアクセスできると聞きました。
そこで、インデックスの付与基準を教えてください。

作成日(更新日?)の古いものから、1,2,3とインデックスを付与するのでしょうか?

Aベストアンサー

聞き間違いだと思う。
ファイル名の一覧を配列に格納したとか、そんなとこじゃないかと思う。
というより VBA でファイル一覧を取り扱う場合、私は FileSystemObject しか使わない。

Q週の日数は7日ですが、これを表すJavaの定数を教えてください。

曜日を取得するフィールド値
Calendar.DAY_OF_WEEK = 7

フィールド値であって日数ではないですから、使ってはいけないですよね
ぴったりな定数は他に用意されているのでしょうか?

Aベストアンサー

DAY_OF_WEEK は、曜日の指定で、7は日数では全然ないのでまずいでしょうね。

定数としてはJavaには無さそう。Addでー週ずらした日付を作って差をとるか
定義しちゃって良いのでは?

Qjava についての質問です! 下の写真のように i <= 10 と条件を先につけて あとから i

java についての質問です!
下の写真のように i <= 10 と条件を先につけて
あとから i > 5 break にする理由はなんですか?
java を初めて3日目の人間からしたら
最初から i <= 5 にしておけばいい気しかしないのですが。。

Aベストアンサー

>配列についてはProgateにて学びました!
単純な例ですと

要素数が10000の配列に色々な数字がランダムで入っているとします
この中から指定した数字が入ってる場所を探したい
そうすると、とりあえずfor文は
for(int i = 1; i < 10000; i++)
になりますね

指定した数字が見つければ良いだけですから
実際に10000回もループをまわす必要はありません
もしかしたら一番最初で見つかるかもしれません
じゃあ見つかった後の処理はとても無駄ですし勿体無いです
でももしかしたら10000回目で見つかるのかもしれない...

なので見つけた時点でループを抜けてしまえばいいので
画像の例みたいにif文で判定をしてbreak文で抜けるようにするのです


人気Q&Aランキング