Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^5: locating ultima thule

by haukex (Archbishop)
on Jan 06, 2019 at 09:43 UTC ( [id://1228098]=note: print w/replies, xml ) Need Help??


in reply to Re^4: locating ultima thule
in thread locating ultima thule

Ok, you've confirmed that $vars{refc}[$i][0] is undef, but as I said, please use Data::Dumper (or Data::Dump) to show the contents of $vars{refc}. Probably the data structure that get_content is returning doesn't match what you're doing with it in put_page.

Replies are listed 'Best First'.
Re^6: locating ultima thule
by Aldebaran (Curate) on Jan 08, 2019 at 08:03 UTC
    please use Data::Dumper (or Data::Dump) to show the contents of $vars{refc}

    What it showed was that the content was populated. What was causing the entire template to go wonky was that there were more files in rus_captions than in eng_captions or images. I filled undefined things with bubble gum and just got them on the net. Most of the complaining is about not being able to sftp non-existent files. I wanted to come up with some baseline defaults so that the whole page doesn't go down for lack of an image to stand in for a while.

    I've gotten rid of a lot of mistakes as I dug my way back into this one. The first was not having brackets around my qw in the initialization of the array:

    elt 0 0 is й elt 0 1 is elt 0 2 is elt 0 3 is л elt 0 4 is elt 0 5 is elt 0 6 is с elt 0 7 is elt 0 8 is Can't use string ("о") as an ARRAY ref while "strict refs" in us +e at template_stuff/utils1.pm line 61. $

    I don't see a way to use Dumper and have that the be cyrillic, because that's what I want to see. I use Dumper for doing anything to get on the scoreboard. (Not such a high price, except that you condemn yourself to read a lot of your own data: uggh)

    I've been trying to write a better print_aoa_utf8 but have only partial success. Partially, my data set needed more conditioning. The hardest thing for me to represent like this is a space.

    in make russian xword------
    elt 0 0 is й
    elt 0 1 is  
    elt 0 2 is  
    elt 0 3 is л
    elt 0 4 is  
    elt 0 5 is  
    elt 0 6 is с
    elt 0 7 is  
    elt 0 8 is  
    elt 1 0 is о
    elt 1 1 is б
    elt 1 2 is л
    elt 1 3 is о
    elt 1 4 is м
    elt 1 5 is о
    elt 1 6 is в
    elt 1 7 is '
    elt 1 8 is '
    elt 1 9 is ш
    elt 2 0 is 1
    elt 2 1 is 2
    elt 2 2 is 3
    elt 2 3 is 4
    elt 2 4 is 5
    elt 2 5 is 6
    elt 2 6 is 7
    elt 2 7 is 8
    elt 2 8 is 9
    return1 is nothing nyet

    What I have is:

    sub print_aoa_utf8 { use warnings; use 5.011; use utf8; # a la François use open OUT => ':encoding(utf8)'; use open ':std'; my $a = shift; my @AoA = @$a; for my $i ( 0 .. $#AoA ) { my $aref = $AoA[$i]; for my $j ( 0 .. $#{$aref} ) { print "elt $i $j is $AoA[$i][$j]\n"; } } return $a; }

    With my difficulties getting any values initialized. I wonder how I might make it a matter of course and think that a toolkit solution would be a reasonable goal, in particular because I want to have a means for considering fonts, and we saw a tk version of trying out different fonts not long ago.

    I had to make sure that all previous russian captions were erased before I went and got more:

    print "Make rus captions(y/n)?: "; my $prompt1 = <STDIN>; chomp $prompt1; if ( $prompt1 eq ( "y" | "Y" ) ) { ## delete existing files foreach my $child ( $vars{rus_captions}->children ) { my $success = $child->remove; say "success deleting was $success"; } my $ref_cap = make_russian_captions($rvars); }

    STDOUT then shows:

    Make rus captions(y/n)?: y success deleting was 1 success deleting was 1 success deleting was 1 success deleting was 1 matching are a.txt b.txt rus_munge is /home/bob/2.scripts/pages/7.cw/template_stuff/translation +s/trans.07-01-2019-16-15-08.txt rus_path is /home/bob/2.scripts/pages/7.cw/template_stuff/ruscaptions/ +a.txt rus_path is /home/bob/2.scripts/pages/7.cw/template_stuff/ruscaptions/ +b.txt

    And I figured all this out by looking at the data as haukex suggested. I've had a nice few days coding that reduces the ugly, but not completely.

    sub make_russian_crossword { use 5.011; use warnings; use POSIX qw(strftime); use Path::Tiny; use Encode; use open OUT => ':encoding(UTF-8)', ':std'; use Data::Dumper; my $rvars = shift; my %vars = %$rvars; my $munge = strftime( "p%d-%m-%Y-%H-%M-%S\.txt", localtime); my $in_path = path( $vars{rus_captions}, $munge )->touchpath; ##Let mother know that you created a file, *verb* a reference: $vars{log_file}=$in_path; $rvars = \%vars; #does this line do anything for me? # open file for writing # my $fh = path($in_path)->openw_utf8; not helping say "in make russian xword------"; my $data = $vars{cw_data}; #print Dumper $data; print_aoa_utf8($data); #print $fh $data; my $a = $data; my @AoA = @$a; for my $i ( 0 .. $#AoA ) { my $aref = $AoA[$i]; for my $j ( 0 .. $#{$aref} ) { "$AoA[$i][$j]"; } print "\n"; } # ->append_utf8(@data); return "nothing nyet" }

    Does the 3rd line here do anything for me or the program?

    ##Let mother know that you created a file, *verb* a reference: $vars{log_file}=$in_path; $rvars = \%vars; #does this line do anything for me?

    What I'm reaching for at the end is a control that will go over the array, which can be seen as a column vector of row vectors. I want to iterate over the columns and print out one row at time, with no spaces and a newline at the end. Fishing for notation as to how to do that. With the output as a series of outputs of row vectors, then I think it will fit in well with the Path::Tiny method call append_utf8(@data). Then we can see how these things look on the net. Right now, it's looking pretty stable: crossword prototype shaping up.

    Again, very grateful for comments,

      I don't see a way to use Dumper and have that the be cyrillic, because that's what I want to see.

      Yes, Data::Dumper and Data::Dump will output escapes instead of Unicode characters. But the reason I asked for output from one of those modules (twice) is because it provides others, like myself, the best information to help debug your code. The debug output you showed does not really allow differentiating between undef, space characters, or empty strings, and also I can't really help you with the Can't use string as an ARRAY ref error because I'd have to guess which data element it's coming from - it's somewhere in @AoA, but I can't see the actual data structure, nor can I run your code on my end to reproduce the error, because of the missing data. The aforementioned modules will output actual valid Perl syntax, which means it can just be copied and pasted into a Perl script to create a runnable example (or you can just provide a runnable example to begin with).

      For debug output for yourself, you could use Data::Printer, as I showed here, as it will print Unicode characters, but if you want others to help debug, please give them the information they ask for. I also suggest you read through Short, Self-Contained, Correct Example.

      use Data::Dump; dd \@AoA; # - or - use Data::Dumper; $Data::Dumper::Useqq=1; print Dumper(\@AoA);
        but if you want others to help debug, please give them the information they ask for.

        I didn't mean to be bucking the I.T. help. The output greatly depends on where I dump this hash, is what I have learned. The existence of this page with its content proves its antedent existence in this hash, just not now as it is one line from going out of scope. I seem to have lot of warnings that I might characterize as "accretion problems." All of my paths are still blessed. Some are ready to house new paths and data.

        Btw, how does a person change the subject? We're addressing less Ultima Thule and more "displaying an array of unicode characters faithfully."

        I also suggest you read through Short, Self-Contained, Correct Example.

        I'm glad to have SSCCE in my write-ups now. Just asking people to post one (or any code they have) is gonna put me in the points path, because that is how code gets posted and thereafter improved by perl's hive-mind. An occasional re-read does no harm. I've been trying for months now to make these functions more exportable, portable. Separating functions into modules that do only that task. Mostly this takes the form of editing and updating the perl.Update working example shows caller

        html7.pm is to handle all the html worries now. We got in there on this thread and made some improvements:

        The new things are being written in utils1.pm. It's gonna build its PathTinyness in a different place than when it was written. As we look farther away at when these utils were written, we start to see them using File::Slurp. Getting rid of it has been this Napoleonic war. It's fun to let Path::Tiny grow organically, simplifying what it encounters. You'll recognize a couple subroutines of yours that I want to test in the world of crossworld puzzles.

        nibley1.pm is as far as it reaches, and it shows the capability I want to have: I would like to build hashes with english words as keys and their corresponding russian word. I think the get_text function in the following might have made those substitutions.

        What do these substitutions do?

        while (<$hh>) { $_ =~ s/($check)/$hash{$1}/gi; $_ =~ s/[^[:ascii:]]+/ /g; # $_ =~ s%<br>%%; say "default is $_"; $text = $text . $_; }

        What would put me at the end of the process and looking back is if I could subsume these parts into my script. The text_to_caption routine looks like it would work alright, but there's no need to propagate it and its File::Slurp-ness.

        For an SSCCE, consider:

        $ touch 1.mp.txt $ gedit 1.mp.txt & [1] 11120 $ trans :de file://1.mp.txt Ich winke meine privaten Teile an Ihre Tanten, Sie käsige Menge gebrau +chte elektrische Esel-Bottom-Beißer. [1]+ Done gedit 1.mp.txt $ cat 1.mp.txt I wave my private parts at your aunties, you cheesy lot of second hand + electric donkey-bottom biters. $

        The taunt from ultimate scene in Monty Python's Grail makes a great example of the difficulty of translating a sentence. First, there's nothing in the google german translation that suggests genitive. What does one do with the 'of'? (I think the adjective gebrauchter should show the genitive plural declination.) We know that donkey bottom is a word that we would aggregate. Not the easiest for a translator when people seem to take license whenever we do.

        For the translations, I've got the ones with the module and google API key and the translation shell as well.

        Thanks for your comment,

      use Data::Dump 'dd'; dd(\@foo);

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1228098]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (6)
As of 2024-04-24 08:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found