If you have an ID3DX10EffectVariable that represents perFrame, then you should be able to call GetType to get an ID3DX10EffectType for perFrame. Then you can call GetDesc on that type instance to get a D3DX10_EFFECT_TYPE_DESC which has a Members field which should give you want you need.
That said, I think accessing members by index is generally fairly brittle and that giving fields semantics whenever possible to more desirable.
Note that I have never actually tried this on structures denoted cbuffer so there may be some additional hoops you need to jump through if things don't quite work out -- constant buffers may have some specialized rules or handling via the effect interface. But I'm reasonably sure this will at least set you on the right track given that constant buffers seem to be well-understood by the API.
EDIT: I retargetted all the links to point at the D3D10 versions and not the D3D11 versions.