こんにちは私はperlで新しく、1つの問題を抱えています。私は値としていくつかの行を保存したいという点でハッシュのハッシュを作成しています。私は価値のある行だけを歌っています。ハッシュ値のハッシュに複数の行を格納する方法
FILE.TXT
family(){
kapoor(){
member1(){
male(){
between : 0 to 5
person : 2
their name is bla & bla.
and bla bla......
blaa.....
}
male(){
between : 5 to 5
person : 20
their name is bla & bla bla.
and bla bla......
blaa.....
}
}
member2(){
male(){
between : 0 to 5
person : 2
their name is bla & bla.
and bla bla......
blaa.....
}
male(){
between : 5 to 5
person : 20
their name is bla & bla bla.
and bla bla......
blaa.....
}
}
}
rai(){
member1(){
male(){
between : 0 to 5
person : 2
their name is bla & bla.
and bla bla......
blaa.....
}
male(){
between : 5 to 5
person : 20
their name is bla & bla bla.
and bla bla......
blaa.....
}
}
member2(){
male(){
between : 0 to 5
person : 2
their name is bla & bla.
and bla bla......
blaa.....
}
male(){
between : 5 to 5
person : 20
their name is bla & bla bla.
and bla bla......
blaa.....
}
}
}
O/Pは次のようになります。
family=>{
kapoor => {
member1=>{
0 to 5=> person : 2
their name is bla & bla.
and bla bla......
blaa.....
}
member2=> {
5 to 5 => person : 20
their name is bla & bla bla.
and bla bla......
blaa.....
}
rai =>{
/...................etc
}
私はここで
family=>{
kapoor => {
member1=>{
0 to 5=> person : 2
}
member2=> {
5 to 5 => person : 20
}
rai =>{
/...................etc
}
のような、価値の唯一の単一の行を取得しています、私が試したものです:
while(my$line=<$fh>)
{
if($line=~/$family_name_re/)
{
$family_name=$1;
$family_count=$cell_count+1;
}
elsif ($line=~/$member_re/)
{
$member = $1;
}
elsif ($line=~/$age_re/)
{
$age_range=$1;
$data{$family_name}{$member}{$age_range}=$line;
}
}
print Dumper(\%data);
print "Number of cell is $cell_count\n";
close ($fh);
値に複数の行を割り当てる方法がわかりません。私は値を割り当てる際に試しましたが、うまくいきませんでした。
最後 'elsif'に、あなたは' $ LINE1 = <$fh> '、' $ LINE2 = <$fh> '、などのように次の行(3または任意の必要な行数)を取得することができます。.. – Sundeep
あなたの入力ファイルは非常に混乱しています:入れ子が正しくない(member1は2人の男性です)、あなたは男性グループを無視します。また、あなたが作業している正規表現を私たちに与えないので、あなたのコードは不完全です。 @spasicが述べたように、現在のところ、ファイルから行ごとのデータを読み込み/格納するだけなので、何らかの理由でより多くの行を読み込む必要があります。それが今の中核的な問題です。 – eballes
ebailesによると、ファイル形式とその構文解析はあまり意味がありません。あなたのハッシュ割り当てはうまくいくように見えます(ただし、 '$ line'が実際に何であるかは明確ではありません)。正確な形式で正規表現を表示してください。 – zdim